aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin')
-rw-r--r--mediagoblin/_compat.py32
-rw-r--r--mediagoblin/_version.py2
-rw-r--r--mediagoblin/api/__init__.py (renamed from mediagoblin/webfinger/__init__.py)10
-rw-r--r--mediagoblin/api/decorators.py48
-rw-r--r--mediagoblin/api/routing.py144
-rw-r--r--mediagoblin/api/views.py840
-rw-r--r--mediagoblin/app.py181
-rw-r--r--mediagoblin/auth/tools.py34
-rw-r--r--mediagoblin/auth/views.py11
-rw-r--r--mediagoblin/config_spec.ini44
-rw-r--r--mediagoblin/db/__init__.py1
-rw-r--r--mediagoblin/db/base.py164
-rw-r--r--mediagoblin/db/migration_tools.py115
-rw-r--r--mediagoblin/db/migrations.py1471
-rw-r--r--mediagoblin/db/migrations/README57
-rw-r--r--mediagoblin/db/migrations/env.py64
-rw-r--r--mediagoblin/db/migrations/script.py.mako24
-rw-r--r--mediagoblin/db/migrations/versions/.gitkeep0
-rw-r--r--mediagoblin/db/migrations/versions/101510e3a713_removes_graveyard_items_from_.py60
-rw-r--r--mediagoblin/db/migrations/versions/228916769bd2_ensure_report_object_id_is_nullable.py33
-rw-r--r--mediagoblin/db/migrations/versions/3145accb8fe3_remove_tombstone_comment_wrappers.py44
-rw-r--r--mediagoblin/db/migrations/versions/4066b9f8b84a_use_comment_link_ids_notifications.py103
-rw-r--r--mediagoblin/db/migrations/versions/52bf0ccbedc1_initial_revision.py422
-rw-r--r--mediagoblin/db/migrations/versions/8429e33fdf7_remove_the_graveyard_objects_from_.py62
-rw-r--r--mediagoblin/db/mixin.py352
-rw-r--r--mediagoblin/db/models.py1164
-rw-r--r--mediagoblin/db/open.py134
-rw-r--r--mediagoblin/db/util.py25
-rw-r--r--mediagoblin/decorators.py64
-rw-r--r--mediagoblin/edit/forms.py42
-rw-r--r--mediagoblin/edit/lib.py2
-rw-r--r--mediagoblin/edit/routing.py2
-rw-r--r--mediagoblin/edit/views.py129
-rw-r--r--mediagoblin/errormiddleware.py8
-rw-r--r--mediagoblin/gmg_commands/__init__.py54
-rw-r--r--mediagoblin/gmg_commands/addmedia.py33
-rw-r--r--mediagoblin/gmg_commands/alembic_commands.py71
-rw-r--r--mediagoblin/gmg_commands/batchaddmedia.py60
-rw-r--r--mediagoblin/gmg_commands/dbupdate.py131
-rw-r--r--mediagoblin/gmg_commands/deletemedia.py9
-rw-r--r--mediagoblin/gmg_commands/import_export.py256
-rw-r--r--mediagoblin/gmg_commands/reprocess.py43
-rw-r--r--mediagoblin/gmg_commands/serve.py65
-rw-r--r--mediagoblin/gmg_commands/shell.py58
-rw-r--r--mediagoblin/gmg_commands/users.py63
-rw-r--r--mediagoblin/gmg_commands/util.py4
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mobin53468 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ar/mediagoblin.po (renamed from mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po)756
-rw-r--r--mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.mobin52142 -> 0 bytes
-rw-r--r--mediagoblin/i18n/bg/mediagoblin.po (renamed from mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.po)680
-rw-r--r--mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mobin36320 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po1852
-rw-r--r--mediagoblin/i18n/ca/mediagoblin.po2659
-rw-r--r--mediagoblin/i18n/ca@valencia/mediagoblin.po2680
-rw-r--r--mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.mobin36019 -> 0 bytes
-rw-r--r--mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.po1848
-rw-r--r--mediagoblin/i18n/cs/mediagoblin.po2634
-rw-r--r--mediagoblin/i18n/cy/mediagoblin.po (renamed from mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po)172
-rw-r--r--mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mobin35542 -> 0 bytes
-rw-r--r--mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po1850
-rw-r--r--mediagoblin/i18n/da/mediagoblin.po (renamed from mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po)1413
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mobin36930 -> 0 bytes
-rw-r--r--mediagoblin/i18n/de/mediagoblin.po (renamed from mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po)1507
-rw-r--r--mediagoblin/i18n/dz/mediagoblin.po (renamed from mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.po)411
-rw-r--r--mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.mobin40430 -> 0 bytes
-rw-r--r--mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.po1847
-rw-r--r--mediagoblin/i18n/el/mediagoblin.po (renamed from mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po)970
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mobin50621 -> 0 bytes
-rw-r--r--mediagoblin/i18n/eo/mediagoblin.po (renamed from mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po)684
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mobin37221 -> 0 bytes
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po1859
-rw-r--r--mediagoblin/i18n/es/mediagoblin.po2828
-rw-r--r--mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mobin42814 -> 0 bytes
-rw-r--r--mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po1848
-rw-r--r--mediagoblin/i18n/fa/mediagoblin.po2631
-rw-r--r--mediagoblin/i18n/fa_IR/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/fi/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mobin37945 -> 0 bytes
-rw-r--r--mediagoblin/i18n/fr/mediagoblin.po (renamed from mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po)1504
-rw-r--r--mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.mobin36335 -> 0 bytes
-rw-r--r--mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.po1847
-rw-r--r--mediagoblin/i18n/gl/mediagoblin.po2630
-rw-r--r--mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mobin54495 -> 0 bytes
-rw-r--r--mediagoblin/i18n/he/mediagoblin.po (renamed from mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po)900
-rw-r--r--mediagoblin/i18n/hi/mediagoblin.po2681
-rw-r--r--mediagoblin/i18n/hu/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mobin49783 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ia/mediagoblin.po (renamed from mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po)680
-rw-r--r--mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mobin52696 -> 0 bytes
-rw-r--r--mediagoblin/i18n/is_IS/mediagoblin.po (renamed from mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po)800
-rw-r--r--mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mobin51435 -> 0 bytes
-rw-r--r--mediagoblin/i18n/it/mediagoblin.po (renamed from mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po)948
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mobin35381 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po1849
-rw-r--r--mediagoblin/i18n/ja/mediagoblin.po2632
-rw-r--r--mediagoblin/i18n/jbo/mediagoblin.po2630
-rw-r--r--mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mobin51538 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ko_KR/mediagoblin.po (renamed from mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po)684
-rw-r--r--mediagoblin/i18n/lt/mediagoblin.po2717
-rw-r--r--mediagoblin/i18n/nb_NO/mediagoblin.po2638
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mobin50186 -> 0 bytes
-rw-r--r--mediagoblin/i18n/nl/mediagoblin.po2635
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mobin49014 -> 0 bytes
-rw-r--r--mediagoblin/i18n/nn_NO/mediagoblin.po (renamed from mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po)929
-rw-r--r--mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mobin51500 -> 0 bytes
-rw-r--r--mediagoblin/i18n/pl/mediagoblin.po (renamed from mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po)1452
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mobin36189 -> 0 bytes
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po1852
-rw-r--r--mediagoblin/i18n/pt_BR/mediagoblin.po2666
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mobin51352 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ro/mediagoblin.po (renamed from mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po)684
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mobin43730 -> 0 bytes
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po1849
-rw-r--r--mediagoblin/i18n/ru/mediagoblin.po2787
-rw-r--r--mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mobin36199 -> 0 bytes
-rw-r--r--mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po1852
-rw-r--r--mediagoblin/i18n/sk/mediagoblin.po2635
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mobin49941 -> 0 bytes
-rw-r--r--mediagoblin/i18n/sl/mediagoblin.po (renamed from mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.po)411
-rw-r--r--mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mobin52087 -> 0 bytes
-rw-r--r--mediagoblin/i18n/sq/mediagoblin.po (renamed from mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po)1425
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mobin49819 -> 0 bytes
-rw-r--r--mediagoblin/i18n/sr/mediagoblin.po (renamed from mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po)680
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mobin50005 -> 0 bytes
-rw-r--r--mediagoblin/i18n/sv/mediagoblin.po (renamed from mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po)1049
-rw-r--r--mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mobin50020 -> 0 bytes
-rw-r--r--mediagoblin/i18n/te/mediagoblin.po (renamed from mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po)680
-rw-r--r--mediagoblin/i18n/templates/en/mediagoblin.po2613
-rw-r--r--mediagoblin/i18n/templates/mediagoblin.pot2614
-rw-r--r--mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.mobin15456 -> 0 bytes
-rw-r--r--mediagoblin/i18n/tr/mediagoblin.po (renamed from mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.po)0
-rw-r--r--mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.mobin50194 -> 0 bytes
-rw-r--r--mediagoblin/i18n/tr_TR/mediagoblin.po (renamed from mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.po)740
-rw-r--r--mediagoblin/i18n/uz@Latn/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.mobin49741 -> 0 bytes
-rw-r--r--mediagoblin/i18n/vi/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.mobin49755 -> 0 bytes
-rw-r--r--mediagoblin/i18n/vi_VN/mediagoblin.po2629
-rw-r--r--mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.mobin49075 -> 0 bytes
-rw-r--r--mediagoblin/i18n/zh_CN/mediagoblin.po (renamed from mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.po)684
-rw-r--r--mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mobin49763 -> 0 bytes
-rw-r--r--mediagoblin/i18n/zh_TW.Big5/mediagoblin.po (renamed from mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po)682
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mobin48777 -> 0 bytes
-rw-r--r--mediagoblin/i18n/zh_TW/mediagoblin.po (renamed from mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po)686
-rw-r--r--mediagoblin/init/__init__.py29
-rw-r--r--mediagoblin/init/celery/__init__.py23
-rw-r--r--mediagoblin/init/config.py47
-rw-r--r--mediagoblin/listings/views.py55
-rw-r--r--mediagoblin/meddleware/csrf.py4
-rw-r--r--mediagoblin/media_types/__init__.py120
-rw-r--r--mediagoblin/media_types/ascii/migrations/72bd70f7eefd_ascii_media_type_initial_migration.py33
-rw-r--r--mediagoblin/media_types/ascii/processing.py17
-rw-r--r--mediagoblin/media_types/audio/config_spec.ini1
-rw-r--r--mediagoblin/media_types/audio/migrations/e9212d3a12d3_adding_audio_media_type_initial_.py32
-rw-r--r--mediagoblin/media_types/audio/processing.py47
-rw-r--r--mediagoblin/media_types/audio/spectrogram.py4
-rw-r--r--mediagoblin/media_types/audio/transcoders.py164
-rw-r--r--mediagoblin/media_types/blog/forms.py27
-rw-r--r--mediagoblin/media_types/blog/migrations/562bc42a8fff_blog_media_type_initial_migration.py59
-rw-r--r--mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html2
-rw-r--r--mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html2
-rw-r--r--mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html2
-rw-r--r--mediagoblin/media_types/blog/views.py124
-rw-r--r--mediagoblin/media_types/image/__init__.py6
-rw-r--r--mediagoblin/media_types/image/migrations.py56
-rw-r--r--mediagoblin/media_types/image/migrations/a98c1a320e88_image_media_type_initial.py36
-rw-r--r--mediagoblin/media_types/image/models.py4
-rw-r--r--mediagoblin/media_types/image/processing.py90
-rw-r--r--mediagoblin/media_types/pdf/migrations/faa209f143b5_pdf_media_type_initial_migration.py46
-rw-r--r--mediagoblin/media_types/pdf/processing.py7
-rw-r--r--mediagoblin/media_types/raw_image/__init__.py37
-rw-r--r--mediagoblin/media_types/raw_image/models.py (renamed from mediagoblin/plugins/oauth/templates/oauth/authorize.html)24
-rw-r--r--mediagoblin/media_types/raw_image/processing.py82
-rw-r--r--mediagoblin/media_types/stl/migrations/16134ed134ad_stl_media_type_initial_migration.py40
-rw-r--r--mediagoblin/media_types/stl/model_loader.py2
-rw-r--r--mediagoblin/media_types/stl/processing.py2
-rw-r--r--mediagoblin/media_types/tools.py19
-rw-r--r--mediagoblin/media_types/video/__init__.py11
-rw-r--r--mediagoblin/media_types/video/migrations.py61
-rw-r--r--mediagoblin/media_types/video/migrations/38feb829c545_video_media_type_initial_migration.py36
-rw-r--r--mediagoblin/media_types/video/models.py17
-rw-r--r--mediagoblin/media_types/video/processing.py198
-rw-r--r--mediagoblin/media_types/video/transcoders.py712
-rw-r--r--mediagoblin/media_types/video/util.py46
-rw-r--r--mediagoblin/mg_globals.py3
-rw-r--r--mediagoblin/moderation/forms.py5
-rw-r--r--mediagoblin/moderation/tools.py39
-rw-r--r--mediagoblin/moderation/views.py30
-rw-r--r--mediagoblin/notifications/__init__.py43
-rw-r--r--mediagoblin/notifications/task.py6
-rw-r--r--mediagoblin/notifications/tools.py31
-rw-r--r--mediagoblin/notifications/views.py22
-rw-r--r--mediagoblin/oauth/__init__.py6
-rw-r--r--mediagoblin/oauth/oauth.py105
-rw-r--r--mediagoblin/oauth/routing.py8
-rw-r--r--mediagoblin/oauth/views.py50
-rw-r--r--mediagoblin/plugins/api/tools.py14
-rw-r--r--mediagoblin/plugins/api/views.py33
-rw-r--r--mediagoblin/plugins/archivalook/migrations/b10b5f822789_archivalook_plugin_initial_migration.py37
-rw-r--r--mediagoblin/plugins/archivalook/templates/archivalook/feature.html6
-rw-r--r--mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_head.html2
-rw-r--r--mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html8
-rw-r--r--mediagoblin/plugins/archivalook/templates/archivalook/root.html16
-rw-r--r--mediagoblin/plugins/archivalook/tools.py20
-rw-r--r--mediagoblin/plugins/basic_auth/README.rst2
-rw-r--r--mediagoblin/plugins/basic_auth/__init__.py8
-rw-r--r--mediagoblin/plugins/basic_auth/forms.py10
-rw-r--r--mediagoblin/plugins/basic_auth/tools.py4
-rw-r--r--mediagoblin/plugins/basic_auth/views.py38
-rw-r--r--mediagoblin/plugins/flatpagesfile/README.rst8
-rw-r--r--mediagoblin/plugins/geolocation/__init__.py6
-rw-r--r--mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html18
-rw-r--r--mediagoblin/plugins/httpapiauth/__init__.py4
-rw-r--r--mediagoblin/plugins/ldap/README.rst18
-rw-r--r--mediagoblin/plugins/ldap/forms.py4
-rw-r--r--mediagoblin/plugins/ldap/tools.py4
-rw-r--r--mediagoblin/plugins/ldap/views.py12
-rw-r--r--mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html2
-rw-r--r--mediagoblin/plugins/oauth/README.rst148
-rw-r--r--mediagoblin/plugins/oauth/__init__.py109
-rw-r--r--mediagoblin/plugins/oauth/forms.py69
-rw-r--r--mediagoblin/plugins/oauth/migrations.py158
-rw-r--r--mediagoblin/plugins/oauth/models.py192
-rw-r--r--mediagoblin/plugins/oauth/templates/oauth/client/list.html45
-rw-r--r--mediagoblin/plugins/oauth/tools.py114
-rw-r--r--mediagoblin/plugins/oauth/views.py253
-rw-r--r--mediagoblin/plugins/openid/README.rst12
-rw-r--r--mediagoblin/plugins/openid/__init__.py6
-rw-r--r--mediagoblin/plugins/openid/forms.py6
-rw-r--r--mediagoblin/plugins/openid/migrations/071abb33d1da_openid_plugin_initial_migration.py54
-rw-r--r--mediagoblin/plugins/openid/store.py6
-rw-r--r--mediagoblin/plugins/openid/views.py5
-rw-r--r--mediagoblin/plugins/persona/__init__.py6
-rw-r--r--mediagoblin/plugins/persona/forms.py6
-rw-r--r--mediagoblin/plugins/persona/migrations/c7d4840a5592_persona_plugin_initial_migration.py35
-rw-r--r--mediagoblin/plugins/persona/views.py4
-rw-r--r--mediagoblin/plugins/piwigo/forms.py18
-rw-r--r--mediagoblin/plugins/piwigo/tools.py2
-rw-r--r--mediagoblin/plugins/piwigo/views.py13
-rw-r--r--mediagoblin/plugins/processing_info/README.rst5
-rw-r--r--mediagoblin/plugins/processing_info/__init__.py51
-rw-r--r--mediagoblin/plugins/processing_info/templates/mediagoblin/processing_info/header_left.html (renamed from mediagoblin/plugins/oauth/templates/oauth/client/register.html)34
-rw-r--r--mediagoblin/plugins/trim_whitespace/README.rst2
-rw-r--r--mediagoblin/processing/__init__.py31
-rw-r--r--mediagoblin/processing/task.py29
-rw-r--r--mediagoblin/routing.py3
-rw-r--r--mediagoblin/static/css/audio.css3
-rw-r--r--mediagoblin/static/css/base.css156
l---------mediagoblin/static/extlib/video-js2
-rw-r--r--mediagoblin/static/images/small-gavroche.pngbin0 -> 4599 bytes
-rw-r--r--mediagoblin/static/images/small-gavroche.xcfbin0 -> 392752 bytes
-rw-r--r--mediagoblin/static/images/type_icons/video.pngbin0 -> 1245 bytes
l---------mediagoblin/static/js/extlib/html5slider.js1
l---------mediagoblin/static/js/extlib/jquery.js2
-rw-r--r--mediagoblin/static/js/geolocation-map.js6
-rw-r--r--mediagoblin/static/js/header_dropdown.js24
-rw-r--r--mediagoblin/static/js/post_comment.js63
-rw-r--r--mediagoblin/storage/__init__.py14
-rw-r--r--mediagoblin/storage/cloudfiles.py25
-rw-r--r--mediagoblin/storage/filestorage.py19
-rw-r--r--mediagoblin/storage/mountstorage.py10
-rw-r--r--mediagoblin/submit/forms.py11
-rw-r--r--mediagoblin/submit/lib.py83
-rwxr-xr-x[-rw-r--r--]mediagoblin/submit/task.py (renamed from mediagoblin/plugins/oauth/templates/oauth/client/connections.html)40
-rw-r--r--mediagoblin/submit/views.py78
-rw-r--r--mediagoblin/templates/mediagoblin/api/oob.html6
-rw-r--r--mediagoblin/templates/mediagoblin/base.html249
-rw-r--r--mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html2
-rw-r--r--mediagoblin/templates/mediagoblin/edit/attachments.html2
-rw-r--r--mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html69
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit.html2
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit_account.html5
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit_collection.html4
-rw-r--r--mediagoblin/templates/mediagoblin/extra_head.html16
-rw-r--r--mediagoblin/templates/mediagoblin/federation/host-meta.xml22
-rw-r--r--mediagoblin/templates/mediagoblin/fragments/header_notifications.html21
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/ascii.html16
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/audio.html46
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/blogpost.html7
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/pdf.html32
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/stl.html4
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/video.html8
-rw-r--r--mediagoblin/templates/mediagoblin/moderation/media_panel.html48
-rw-r--r--mediagoblin/templates/mediagoblin/moderation/report.html31
-rw-r--r--mediagoblin/templates/mediagoblin/moderation/report_panel.html4
-rw-r--r--mediagoblin/templates/mediagoblin/moderation/user.html8
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/activity.html42
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/blog_media.html27
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/collection.html6
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html8
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html10
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html46
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_collect.html4
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html4
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/processing_panel.html106
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/report.html40
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/user.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/collection_gallery.html17
-rw-r--r--mediagoblin/templates/mediagoblin/utils/collections.html6
-rw-r--r--mediagoblin/templates/mediagoblin/utils/comment-subscription.html8
-rw-r--r--mediagoblin/templates/mediagoblin/utils/object_gallery.html10
-rw-r--r--mediagoblin/templates/mediagoblin/utils/prev_next.html15
-rw-r--r--mediagoblin/templates/mediagoblin/utils/profile.html12
-rw-r--r--mediagoblin/templates/mediagoblin/utils/report.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/tags.html6
-rw-r--r--mediagoblin/tests/__init__.py4
-rw-r--r--mediagoblin/tests/media_tools.py61
-rw-r--r--mediagoblin/tests/starttls_config.ini4
-rw-r--r--mediagoblin/tests/test_api.py678
-rw-r--r--mediagoblin/tests/test_audio.py105
-rw-r--r--mediagoblin/tests/test_auth.py119
-rw-r--r--mediagoblin/tests/test_basic_auth.py9
-rw-r--r--mediagoblin/tests/test_celery_setup.py3
-rw-r--r--mediagoblin/tests/test_csrf_middleware.py4
-rw-r--r--mediagoblin/tests/test_edit.py40
-rw-r--r--mediagoblin/tests/test_exif.py28
-rw-r--r--mediagoblin/tests/test_http_callback.py83
-rw-r--r--mediagoblin/tests/test_ldap.py18
-rw-r--r--mediagoblin/tests/test_legacy_api.py94
-rw-r--r--mediagoblin/tests/test_metadata.py4
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini6
-rw-r--r--mediagoblin/tests/test_mgoblin_app_audio.ini20
-rw-r--r--mediagoblin/tests/test_mgoblin_app_audio_video.ini21
-rw-r--r--mediagoblin/tests/test_mgoblin_app_pdf.ini20
-rw-r--r--mediagoblin/tests/test_mgoblin_app_video.ini20
-rw-r--r--mediagoblin/tests/test_misc.py96
-rw-r--r--mediagoblin/tests/test_modelmethods.py42
-rw-r--r--mediagoblin/tests/test_moderation.py53
-rw-r--r--mediagoblin/tests/test_notifications.py38
-rw-r--r--mediagoblin/tests/test_oauth1.py24
-rw-r--r--mediagoblin/tests/test_oauth2.py223
-rw-r--r--mediagoblin/tests/test_openid.py17
-rw-r--r--mediagoblin/tests/test_paste.ini34
-rw-r--r--mediagoblin/tests/test_pdf.py29
-rw-r--r--mediagoblin/tests/test_persona.py24
-rw-r--r--mediagoblin/tests/test_piwigo.py17
-rw-r--r--mediagoblin/tests/test_pluginapi.py15
-rw-r--r--mediagoblin/tests/test_privileges.py50
-rw-r--r--mediagoblin/tests/test_reporting.py42
-rw-r--r--mediagoblin/tests/test_response.py65
-rw-r--r--mediagoblin/tests/test_sql_migrations.py46
-rw-r--r--mediagoblin/tests/test_storage.py34
-rw-r--r--mediagoblin/tests/test_submission.py271
l---------[-rw-r--r--]mediagoblin/tests/test_submission/good.pdfbin194007 -> 44 bytes
-rw-r--r--mediagoblin/tests/test_tags.py4
-rw-r--r--mediagoblin/tests/test_timesince.py2
-rw-r--r--mediagoblin/tests/test_tools.py118
-rw-r--r--mediagoblin/tests/test_util.py69
-rw-r--r--mediagoblin/tests/test_video.py132
-rw-r--r--mediagoblin/tests/test_workbench.py6
-rw-r--r--mediagoblin/tests/tools.py113
-rw-r--r--mediagoblin/themes/airy/assets/css/airy.css6
l---------mediagoblin/themes/sandyseventiesspeedboat1
-rw-r--r--mediagoblin/tools/crypto.py12
-rw-r--r--mediagoblin/tools/exif.py26
-rw-r--r--mediagoblin/tools/federation.py94
-rw-r--r--mediagoblin/tools/files.py4
-rw-r--r--mediagoblin/tools/mail.py67
-rw-r--r--mediagoblin/tools/metadata.py3
-rw-r--r--mediagoblin/tools/pagination.py11
-rw-r--r--mediagoblin/tools/processing.py15
-rw-r--r--mediagoblin/tools/request.py30
-rw-r--r--mediagoblin/tools/response.py16
-rw-r--r--mediagoblin/tools/routing.py30
-rw-r--r--mediagoblin/tools/staticdirect.py4
-rw-r--r--mediagoblin/tools/template.py22
-rw-r--r--mediagoblin/tools/text.py12
-rw-r--r--mediagoblin/tools/theme.py8
-rw-r--r--mediagoblin/tools/timesince.py14
-rw-r--r--mediagoblin/tools/transition.py (renamed from mediagoblin/webfinger/routing.py)8
-rw-r--r--mediagoblin/tools/translate.py17
-rw-r--r--mediagoblin/tools/url.py4
-rw-r--r--mediagoblin/tools/workbench.py10
-rw-r--r--mediagoblin/user_pages/forms.py2
-rw-r--r--mediagoblin/user_pages/lib.py55
-rw-r--r--mediagoblin/user_pages/routing.py9
-rw-r--r--mediagoblin/user_pages/views.py346
-rw-r--r--mediagoblin/views.py2
-rw-r--r--mediagoblin/webfinger/views.py117
379 files changed, 87412 insertions, 32693 deletions
diff --git a/mediagoblin/_compat.py b/mediagoblin/_compat.py
new file mode 100644
index 00000000..9164d5fc
--- /dev/null
+++ b/mediagoblin/_compat.py
@@ -0,0 +1,32 @@
+import functools
+import warnings
+
+import six
+
+if six.PY3:
+ from email.mime.text import MIMEText
+else:
+ from email.MIMEText import MIMEText
+
+
+def encode_to_utf8(method):
+ def wrapper(self):
+ if six.PY2 and isinstance(method(self), six.text_type):
+ return method(self).encode('utf-8')
+ return method(self)
+ functools.update_wrapper(wrapper, method, ['__name__', '__doc__'])
+ return wrapper
+
+
+# based on django.utils.encoding.python_2_unicode_compatible
+def py2_unicode(klass):
+ if six.PY2:
+ if '__str__' not in klass.__dict__:
+ warnings.warn("@py2_unicode cannot be applied "
+ "to %s because it doesn't define __str__()." %
+ klass.__name__)
+ klass.__unicode__ = klass.__str__
+ klass.__str__ = encode_to_utf8(klass.__unicode__)
+ if '__repr__' in klass.__dict__:
+ klass.__repr__ = encode_to_utf8(klass.__repr__)
+ return klass
diff --git a/mediagoblin/_version.py b/mediagoblin/_version.py
index 9ff2a374..1cc6b02d 100644
--- a/mediagoblin/_version.py
+++ b/mediagoblin/_version.py
@@ -23,4 +23,4 @@
# see http://www.python.org/dev/peps/pep-0386/
-__version__ = "0.6.2.dev"
+__version__ = "1.0.dev"
diff --git a/mediagoblin/webfinger/__init__.py b/mediagoblin/api/__init__.py
index 126e6ea2..621845ba 100644
--- a/mediagoblin/webfinger/__init__.py
+++ b/mediagoblin/api/__init__.py
@@ -13,13 +13,3 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-'''
-mediagoblin.webfinger_ provides an LRDD discovery service and
-a web host meta information file
-
-Links:
-- `LRDD Discovery Draft
- <http://tools.ietf.org/html/draft-hammer-discovery-06>`_.
-- `RFC 6415 - Web Host Metadata
- <http://tools.ietf.org/html/rfc6415>`_.
-'''
diff --git a/mediagoblin/api/decorators.py b/mediagoblin/api/decorators.py
new file mode 100644
index 00000000..b86099bd
--- /dev/null
+++ b/mediagoblin/api/decorators.py
@@ -0,0 +1,48 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from functools import wraps
+
+from mediagoblin.decorators import require_active_login
+from mediagoblin.tools.response import json_response
+
+def user_has_privilege(privilege_name):
+ """
+ Requires that a user have a particular privilege in order to access a page.
+ In order to require that a user have multiple privileges, use this
+ decorator twice on the same view. This decorator also makes sure that the
+ user is not banned, or else it redirects them to the "You are Banned" page.
+
+ :param privilege_name A unicode object that is that represents
+ the privilege object. This object is
+ the name of the privilege, as assigned
+ in the Privilege.privilege_name column
+ """
+
+ def user_has_privilege_decorator(controller):
+ @wraps(controller)
+ @require_active_login
+ def wrapper(request, *args, **kwargs):
+ if not request.user.has_privilege(privilege_name):
+ error = "User '{0}' needs '{1}' privilege".format(
+ request.user.username,
+ privilege_name
+ )
+ return json_response({"error": error}, status=403)
+
+ return controller(request, *args, **kwargs)
+
+ return wrapper
+ return user_has_privilege_decorator
diff --git a/mediagoblin/api/routing.py b/mediagoblin/api/routing.py
new file mode 100644
index 00000000..ea231b63
--- /dev/null
+++ b/mediagoblin/api/routing.py
@@ -0,0 +1,144 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from mediagoblin.tools.routing import add_route
+
+# Add user profile
+add_route(
+ "media.api.user",
+ "/api/user/<string:username>/",
+ "mediagoblin.api.views:user_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.user.profile",
+ "/api/user/<string:username>/profile/",
+ "mediagoblin.api.views:profile_endpoint",
+ match_slash=False
+)
+
+# Inbox and Outbox (feed)
+add_route(
+ "mediagoblin.api.feed",
+ "/api/user/<string:username>/feed/",
+ "mediagoblin.api.views:feed_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.feed_major",
+ "/api/user/<string:username>/feed/major/",
+ "mediagoblin.api.views:feed_major_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.feed_minor",
+ "/api/user/<string:username>/feed/minor/",
+ "mediagoblin.api.views:feed_minor_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.user.uploads",
+ "/api/user/<string:username>/uploads/",
+ "mediagoblin.api.views:uploads_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox",
+ "/api/user/<string:username>/inbox/",
+ "mediagoblin.api.views:inbox_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox_minor",
+ "/api/user/<string:username>/inbox/minor/",
+ "mediagoblin.api.views:inbox_minor_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox_major",
+ "/api/user/<string:username>/inbox/major/",
+ "mediagoblin.api.views:inbox_major_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox_direct",
+ "/api/user/<string:username>/inbox/direct/",
+ "mediagoblin.api.views:inbox_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox_direct_minor",
+ "/api/user/<string:username>/inbox/direct/minor/",
+ "mediagoblin.api.views:inbox_minor_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.inbox_direct_major",
+ "/api/user/<string:username>/inbox/direct/major/",
+ "mediagoblin.api.views:inbox_major_endpoint",
+ match_slash=False
+)
+
+# object endpoints
+add_route(
+ "mediagoblin.api.object",
+ "/api/<string:object_type>/<string:id>/",
+ "mediagoblin.api.views:object_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.api.object.comments",
+ "/api/<string:object_type>/<string:id>/comments/",
+ "mediagoblin.api.views:object_comments",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.webfinger.well-known.host-meta",
+ "/.well-known/host-meta",
+ "mediagoblin.api.views:host_meta"
+)
+
+add_route(
+ "mediagoblin.webfinger.well-known.host-meta.json",
+ "/.well-known/host-meta.json",
+ "mediagoblin.api.views:host_meta"
+)
+
+add_route(
+ "mediagoblin.webfinger.well-known.webfinger",
+ "/.well-known/webfinger/",
+ "mediagoblin.api.views:lrdd_lookup",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.webfinger.whoami",
+ "/api/whoami/",
+ "mediagoblin.api.views:whoami",
+ match_slash=False
+)
diff --git a/mediagoblin/api/views.py b/mediagoblin/api/views.py
new file mode 100644
index 00000000..74181fde
--- /dev/null
+++ b/mediagoblin/api/views.py
@@ -0,0 +1,840 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import json
+import io
+import mimetypes
+
+from werkzeug.datastructures import FileStorage
+
+from mediagoblin.decorators import oauth_required, require_active_login
+from mediagoblin.api.decorators import user_has_privilege
+from mediagoblin.db.models import User, LocalUser, MediaEntry, Comment, TextComment, Activity
+from mediagoblin.tools.federation import create_activity, create_generator
+from mediagoblin.tools.routing import extract_url_arguments
+from mediagoblin.tools.response import redirect, json_response, json_error, \
+ render_404, render_to_response
+from mediagoblin.meddleware.csrf import csrf_exempt
+from mediagoblin.submit.lib import new_upload_entry, api_upload_request, \
+ api_add_to_feed
+
+# MediaTypes
+from mediagoblin.media_types.image import MEDIA_TYPE as IMAGE_MEDIA_TYPE
+
+# Getters
+def get_profile(request):
+ """
+ Gets the user's profile for the endpoint requested.
+
+ For example an endpoint which is /api/{username}/feed
+ as /api/cwebber/feed would get cwebber's profile. This
+ will return a tuple (username, user_profile). If no user
+ can be found then this function returns a (None, None).
+ """
+ username = request.matchdict["username"]
+ user = LocalUser.query.filter(LocalUser.username==username).first()
+
+ if user is None:
+ return None, None
+
+ return user, user.serialize(request)
+
+
+# Endpoints
+@oauth_required
+def profile_endpoint(request):
+ """ This is /api/user/<username>/profile - This will give profile info """
+ user, user_profile = get_profile(request)
+
+ if user is None:
+ username = request.matchdict["username"]
+ return json_error(
+ "No such 'user' with username '{0}'".format(username),
+ status=404
+ )
+
+ # user profiles are public so return information
+ return json_response(user_profile)
+
+@oauth_required
+def user_endpoint(request):
+ """ This is /api/user/<username> - This will get the user """
+ user, user_profile = get_profile(request)
+
+ if user is None:
+ username = request.matchdict["username"]
+ return json_error(
+ "No such 'user' with username '{0}'".format(username),
+ status=404
+ )
+
+ return json_response({
+ "nickname": user.username,
+ "updated": user.created.isoformat(),
+ "published": user.created.isoformat(),
+ "profile": user_profile,
+ })
+
+@oauth_required
+@csrf_exempt
+@user_has_privilege(u'uploader')
+def uploads_endpoint(request):
+ """ Endpoint for file uploads """
+ username = request.matchdict["username"]
+ requested_user = LocalUser.query.filter(LocalUser.username==username).first()
+
+ if requested_user is None:
+ return json_error("No such 'user' with id '{0}'".format(username), 404)
+
+ if request.method == "POST":
+ # Ensure that the user is only able to upload to their own
+ # upload endpoint.
+ if requested_user.id != request.user.id:
+ return json_error(
+ "Not able to post to another users feed.",
+ status=403
+ )
+
+ # Wrap the data in the werkzeug file wrapper
+ if "Content-Type" not in request.headers:
+ return json_error(
+ "Must supply 'Content-Type' header to upload media."
+ )
+
+ mimetype = request.headers["Content-Type"]
+ filename = mimetypes.guess_all_extensions(mimetype)
+ filename = 'unknown' + filename[0] if filename else filename
+ file_data = FileStorage(
+ stream=io.BytesIO(request.data),
+ filename=filename,
+ content_type=mimetype
+ )
+
+ # Find media manager
+ entry = new_upload_entry(request.user)
+ entry.media_type = IMAGE_MEDIA_TYPE
+ return api_upload_request(request, file_data, entry)
+
+ return json_error("Not yet implemented", 501)
+
+@oauth_required
+@csrf_exempt
+def inbox_endpoint(request, inbox=None):
+ """ This is the user's inbox
+
+ Currently because we don't have the ability to represent the inbox in the
+ database this is not a "real" inbox in the pump.io/Activity streams 1.0
+ sense but instead just gives back all the data on the website
+
+ inbox: allows you to pass a query in to limit inbox scope
+ """
+ username = request.matchdict["username"]
+ user = LocalUser.query.filter(LocalUser.username==username).first()
+
+ if user is None:
+ return json_error("No such 'user' with id '{0}'".format(username), 404)
+
+
+ # Only the user who's authorized should be able to read their inbox
+ if user.id != request.user.id:
+ return json_error(
+ "Only '{0}' can read this inbox.".format(user.username),
+ 403
+ )
+
+ if inbox is None:
+ inbox = Activity.query
+
+ # Count how many items for the "totalItems" field
+ total_items = inbox.count()
+
+ # We want to make a query for all media on the site and then apply GET
+ # limits where we can.
+ inbox = inbox.order_by(Activity.published.desc())
+
+ # Limit by the "count" (default: 20)
+ try:
+ limit = int(request.args.get("count", 20))
+ except ValueError:
+ limit = 20
+
+ # Prevent the count being too big (pump uses 200 so we shall)
+ limit = limit if limit <= 200 else 200
+
+ # Apply the limit
+ inbox = inbox.limit(limit)
+
+ # Offset (default: no offset - first <count> results)
+ inbox = inbox.offset(request.args.get("offset", 0))
+
+ # build the inbox feed
+ feed = {
+ "displayName": "Activities for {0}".format(user.username),
+ "author": user.serialize(request),
+ "objectTypes": ["activity"],
+ "url": request.base_url,
+ "links": {"self": {"href": request.url}},
+ "items": [],
+ "totalItems": total_items,
+ }
+
+ for activity in inbox:
+ try:
+ feed["items"].append(activity.serialize(request))
+ except AttributeError:
+ # As with the feed endpint this occurs because of how we our
+ # hard-deletion method. Some activites might exist where the
+ # Activity object and/or target no longer exist, for this case we
+ # should just skip them.
+ pass
+
+ return json_response(feed)
+
+@oauth_required
+@csrf_exempt
+def inbox_minor_endpoint(request):
+ """ Inbox subset for less important Activities """
+ inbox = Activity.query.filter(
+ (Activity.verb == "update") | (Activity.verb == "delete")
+ )
+
+ return inbox_endpoint(request=request, inbox=inbox)
+
+@oauth_required
+@csrf_exempt
+def inbox_major_endpoint(request):
+ """ Inbox subset for most important Activities """
+ inbox = Activity.query.filter_by(verb="post")
+ return inbox_endpoint(request=request, inbox=inbox)
+
+@oauth_required
+@csrf_exempt
+def feed_endpoint(request, outbox=None):
+ """ Handles the user's outbox - /api/user/<username>/feed """
+ username = request.matchdict["username"]
+ requested_user = LocalUser.query.filter(LocalUser.username==username).first()
+
+ # check if the user exists
+ if requested_user is None:
+ return json_error("No such 'user' with id '{0}'".format(username), 404)
+
+ if request.data:
+ data = json.loads(request.data.decode())
+ else:
+ data = {"verb": None, "object": {}}
+
+
+ if request.method in ["POST", "PUT"]:
+ # Validate that the activity is valid
+ if "verb" not in data or "object" not in data:
+ return json_error("Invalid activity provided.")
+
+ # Check that the verb is valid
+ if data["verb"] not in ["post", "update", "delete"]:
+ return json_error("Verb not yet implemented", 501)
+
+ # We need to check that the user they're posting to is
+ # the person that they are.
+ if requested_user.id != request.user.id:
+ return json_error(
+ "Not able to post to another users feed.",
+ status=403
+ )
+
+ # Handle new posts
+ if data["verb"] == "post":
+ obj = data.get("object", None)
+ if obj is None:
+ return json_error("Could not find 'object' element.")
+
+ if obj.get("objectType", None) == "comment":
+ # post a comment
+ if not request.user.has_privilege(u'commenter'):
+ return json_error(
+ "Privilege 'commenter' required to comment.",
+ status=403
+ )
+
+ comment = TextComment(actor=request.user.id)
+ comment.unserialize(data["object"], request)
+ comment.save()
+
+ # Create activity for comment
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="post",
+ actor=request.user,
+ obj=comment,
+ target=comment.get_reply_to(),
+ generator=generator
+ )
+
+ return json_response(activity.serialize(request))
+
+ elif obj.get("objectType", None) == "image":
+ # Posting an image to the feed
+ media_id = extract_url_arguments(
+ url=data["object"]["id"],
+ urlmap=request.app.url_map
+ )["id"]
+
+ # Build public_id
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=obj["objectType"],
+ id=media_id,
+ qualified=True
+ )
+
+ media = MediaEntry.query.filter_by(
+ public_id=public_id
+ ).first()
+
+ if media is None:
+ return json_response(
+ "No such 'image' with id '{0}'".format(media_id),
+ status=404
+ )
+
+ if media.actor != request.user.id:
+ return json_error(
+ "Privilege 'commenter' required to comment.",
+ status=403
+ )
+
+
+ if not media.unserialize(data["object"]):
+ return json_error(
+ "Invalid 'image' with id '{0}'".format(media_id)
+ )
+
+
+ # Add location if one exists
+ if "location" in data:
+ Location.create(data["location"], self)
+
+ media.save()
+ activity = api_add_to_feed(request, media)
+
+ return json_response(activity.serialize(request))
+
+ elif obj.get("objectType", None) is None:
+ # They need to tell us what type of object they're giving us.
+ return json_error("No objectType specified.")
+ else:
+ # Oh no! We don't know about this type of object (yet)
+ object_type = obj.get("objectType", None)
+ return json_error(
+ "Unknown object type '{0}'.".format(object_type)
+ )
+
+ # Updating existing objects
+ if data["verb"] == "update":
+ # Check we've got a valid object
+ obj = data.get("object", None)
+
+ if obj is None:
+ return json_error("Could not find 'object' element.")
+
+ if "objectType" not in obj:
+ return json_error("No objectType specified.")
+
+ if "id" not in obj:
+ return json_error("Object ID has not been specified.")
+
+ obj_id = extract_url_arguments(
+ url=obj["id"],
+ urlmap=request.app.url_map
+ )["id"]
+
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=obj["objectType"],
+ id=obj_id,
+ qualified=True
+ )
+
+ # Now try and find object
+ if obj["objectType"] == "comment":
+ if not request.user.has_privilege(u'commenter'):
+ return json_error(
+ "Privilege 'commenter' required to comment.",
+ status=403
+ )
+
+ comment = TextComment.query.filter_by(
+ public_id=public_id
+ ).first()
+ if comment is None:
+ return json_error(
+ "No such 'comment' with id '{0}'.".format(obj_id)
+ )
+
+ # Check that the person trying to update the comment is
+ # the author of the comment.
+ if comment.actor != request.user.id:
+ return json_error(
+ "Only author of comment is able to update comment.",
+ status=403
+ )
+
+ if not comment.unserialize(data["object"], request):
+ return json_error(
+ "Invalid 'comment' with id '{0}'".format(obj["id"])
+ )
+
+ comment.save()
+
+ # Create an update activity
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="update",
+ actor=request.user,
+ obj=comment,
+ generator=generator
+ )
+
+ return json_response(activity.serialize(request))
+
+ elif obj["objectType"] == "image":
+ image = MediaEntry.query.filter_by(
+ public_id=public_id
+ ).first()
+ if image is None:
+ return json_error(
+ "No such 'image' with the id '{0}'.".format(obj["id"])
+ )
+
+ # Check that the person trying to update the comment is
+ # the author of the comment.
+ if image.actor != request.user.id:
+ return json_error(
+ "Only uploader of image is able to update image.",
+ status=403
+ )
+
+ if not image.unserialize(obj):
+ return json_error(
+ "Invalid 'image' with id '{0}'".format(obj_id)
+ )
+ image.generate_slug()
+ image.save()
+
+ # Create an update activity
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="update",
+ actor=request.user,
+ obj=image,
+ generator=generator
+ )
+
+ return json_response(activity.serialize(request))
+ elif obj["objectType"] == "person":
+ # check this is the same user
+ if "id" not in obj or obj["id"] != requested_user.id:
+ return json_error(
+ "Incorrect user id, unable to update"
+ )
+
+ requested_user.unserialize(obj)
+ requested_user.save()
+
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="update",
+ actor=request.user,
+ obj=requested_user,
+ generator=generator
+ )
+
+ return json_response(activity.serialize(request))
+
+ elif data["verb"] == "delete":
+ obj = data.get("object", None)
+ if obj is None:
+ return json_error("Could not find 'object' element.")
+
+ if "objectType" not in obj:
+ return json_error("No objectType specified.")
+
+ if "id" not in obj:
+ return json_error("Object ID has not been specified.")
+
+ # Parse out the object ID
+ obj_id = extract_url_arguments(
+ url=obj["id"],
+ urlmap=request.app.url_map
+ )["id"]
+
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=obj["objectType"],
+ id=obj_id,
+ qualified=True
+ )
+
+ if obj.get("objectType", None) == "comment":
+ # Find the comment asked for
+ comment = TextComment.query.filter_by(
+ public_id=public_id,
+ actor=request.user.id
+ ).first()
+
+ if comment is None:
+ return json_error(
+ "No such 'comment' with id '{0}'.".format(obj_id)
+ )
+
+ # Make a delete activity
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="delete",
+ actor=request.user,
+ obj=comment,
+ generator=generator
+ )
+
+ # Unfortunately this has to be done while hard deletion exists
+ context = activity.serialize(request)
+
+ # now we can delete the comment
+ comment.delete()
+
+ return json_response(context)
+
+ if obj.get("objectType", None) == "image":
+ # Find the image
+ entry = MediaEntry.query.filter_by(
+ public_id=public_id,
+ actor=request.user.id
+ ).first()
+
+ if entry is None:
+ return json_error(
+ "No such 'image' with id '{0}'.".format(obj_id)
+ )
+
+ # Make the delete activity
+ generator = create_generator(request)
+ activity = create_activity(
+ verb="delete",
+ actor=request.user,
+ obj=entry,
+ generator=generator
+ )
+
+ # This is because we have hard deletion
+ context = activity.serialize(request)
+
+ # Now we can delete the image
+ entry.delete()
+
+ return json_response(context)
+
+ elif request.method != "GET":
+ return json_error(
+ "Unsupported HTTP method {0}".format(request.method),
+ status=501
+ )
+
+ feed = {
+ "displayName": "Activities by {user}@{host}".format(
+ user=request.user.username,
+ host=request.host
+ ),
+ "objectTypes": ["activity"],
+ "url": request.base_url,
+ "links": {"self": {"href": request.url}},
+ "author": request.user.serialize(request),
+ "items": [],
+ }
+
+ # Create outbox
+ if outbox is None:
+ outbox = Activity.query.filter_by(actor=requested_user.id)
+ else:
+ outbox = outbox.filter_by(actor=requested_user.id)
+
+ # We want the newest things at the top (issue: #1055)
+ outbox = outbox.order_by(Activity.published.desc())
+
+ # Limit by the "count" (default: 20)
+ limit = request.args.get("count", 20)
+
+ try:
+ limit = int(limit)
+ except ValueError:
+ limit = 20
+
+ # The upper most limit should be 200
+ limit = limit if limit < 200 else 200
+
+ # apply the limit
+ outbox = outbox.limit(limit)
+
+ # Offset (default: no offset - first <count> result)
+ offset = request.args.get("offset", 0)
+ try:
+ offset = int(offset)
+ except ValueError:
+ offset = 0
+ outbox = outbox.offset(offset)
+
+ # Build feed.
+ for activity in outbox:
+ try:
+ feed["items"].append(activity.serialize(request))
+ except AttributeError:
+ # This occurs because of how we hard-deletion and the object
+ # no longer existing anymore. We want to keep the Activity
+ # in case someone wishes to look it up but we shouldn't display
+ # it in the feed.
+ pass
+ feed["totalItems"] = len(feed["items"])
+
+ return json_response(feed)
+
+@oauth_required
+def feed_minor_endpoint(request):
+ """ Outbox for minor activities such as updates """
+ # If it's anything but GET pass it along
+ if request.method != "GET":
+ return feed_endpoint(request)
+
+ outbox = Activity.query.filter(
+ (Activity.verb == "update") | (Activity.verb == "delete")
+ )
+ return feed_endpoint(request, outbox=outbox)
+
+@oauth_required
+def feed_major_endpoint(request):
+ """ Outbox for all major activities """
+ # If it's anything but a GET pass it along
+ if request.method != "GET":
+ return feed_endpoint(request)
+
+ outbox = Activity.query.filter_by(verb="post")
+ return feed_endpoint(request, outbox=outbox)
+
+@oauth_required
+def object_endpoint(request):
+ """ Lookup for a object type """
+ object_type = request.matchdict["object_type"]
+ try:
+ object_id = request.matchdict["id"]
+ except ValueError:
+ error = "Invalid object ID '{0}' for '{1}'".format(
+ request.matchdict["id"],
+ object_type
+ )
+ return json_error(error)
+
+ if object_type not in ["image"]:
+ # not sure why this is 404, maybe ask evan. Maybe 400?
+ return json_error(
+ "Unknown type: {0}".format(object_type),
+ status=404
+ )
+
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=object_type,
+ id=object_id,
+ qualified=True
+ )
+
+ media = MediaEntry.query.filter_by(public_id=public_id).first()
+ if media is None:
+ return json_error(
+ "Can't find '{0}' with ID '{1}'".format(object_type, object_id),
+ status=404
+ )
+
+ return json_response(media.serialize(request))
+
+@oauth_required
+def object_comments(request):
+ """ Looks up for the comments on a object """
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=request.matchdict["object_type"],
+ id=request.matchdict["id"],
+ qualified=True
+ )
+ media = MediaEntry.query.filter_by(public_id=public_id).first()
+ if media is None:
+ return json_error("Can't find '{0}' with ID '{1}'".format(
+ request.matchdict["object_type"],
+ request.matchdict["id"]
+ ), 404)
+
+ comments = media.serialize(request)
+ comments = comments.get("replies", {
+ "totalItems": 0,
+ "items": [],
+ "url": request.urlgen(
+ "mediagoblin.api.object.comments",
+ object_type=media.object_type,
+ id=media.id,
+ qualified=True
+ )
+ })
+
+ comments["displayName"] = "Replies to {0}".format(comments["url"])
+ comments["links"] = {
+ "first": comments["url"],
+ "self": comments["url"],
+ }
+ return json_response(comments)
+
+##
+# RFC6415 - Web Host Metadata
+##
+def host_meta(request):
+ """
+ This provides the host-meta URL information that is outlined
+ in RFC6415. By default this should provide XRD+XML however
+ if the client accepts JSON we will provide that over XRD+XML.
+ The 'Accept' header is used to decude this.
+
+ A client should use this endpoint to determine what URLs to
+ use for OAuth endpoints.
+ """
+
+ links = [
+ {
+ "rel": "lrdd",
+ "type": "application/json",
+ "href": request.urlgen(
+ "mediagoblin.webfinger.well-known.webfinger",
+ qualified=True
+ )
+ },
+ {
+ "rel": "registration_endpoint",
+ "href": request.urlgen(
+ "mediagoblin.oauth.client_register",
+ qualified=True
+ ),
+ },
+ {
+ "rel": "http://apinamespace.org/oauth/request_token",
+ "href": request.urlgen(
+ "mediagoblin.oauth.request_token",
+ qualified=True
+ ),
+ },
+ {
+ "rel": "http://apinamespace.org/oauth/authorize",
+ "href": request.urlgen(
+ "mediagoblin.oauth.authorize",
+ qualified=True
+ ),
+ },
+ {
+ "rel": "http://apinamespace.org/oauth/access_token",
+ "href": request.urlgen(
+ "mediagoblin.oauth.access_token",
+ qualified=True
+ ),
+ },
+ {
+ "rel": "http://apinamespace.org/activitypub/whoami",
+ "href": request.urlgen(
+ "mediagoblin.webfinger.whoami",
+ qualified=True
+ ),
+ },
+ ]
+
+ if "application/json" in request.accept_mimetypes:
+ return json_response({"links": links})
+
+ # provide XML+XRD
+ return render_to_response(
+ request,
+ "mediagoblin/api/host-meta.xml",
+ {"links": links},
+ mimetype="application/xrd+xml"
+ )
+
+def lrdd_lookup(request):
+ """
+ This is the lrdd endpoint which can lookup a user (or
+ other things such as activities). This is as specified by
+ RFC6415.
+
+ The cleint must provide a 'resource' as a GET parameter which
+ should be the query to be looked up.
+ """
+
+ if "resource" not in request.args:
+ return json_error("No resource parameter", status=400)
+
+ resource = request.args["resource"]
+
+ if "@" in resource:
+ # Lets pull out the username
+ resource = resource[5:] if resource.startswith("acct:") else resource
+ username, host = resource.split("@", 1)
+
+ # Now lookup the user
+ user = LocalUser.query.filter(LocalUser.username==username).first()
+
+ if user is None:
+ return json_error(
+ "Can't find 'user' with username '{0}'".format(username))
+
+ return json_response([
+ {
+ "rel": "http://webfinger.net/rel/profile-page",
+ "href": user.url_for_self(request.urlgen),
+ "type": "text/html"
+ },
+ {
+ "rel": "self",
+ "href": request.urlgen(
+ "mediagoblin.api.user",
+ username=user.username,
+ qualified=True
+ )
+ },
+ {
+ "rel": "activity-outbox",
+ "href": request.urlgen(
+ "mediagoblin.api.feed",
+ username=user.username,
+ qualified=True
+ )
+ }
+ ])
+ else:
+ return json_error("Unrecognized resource parameter", status=404)
+
+
+def whoami(request):
+ """ /api/whoami - HTTP redirect to API profile """
+ if request.user is None:
+ return json_error("Not logged in.", status=401)
+
+ profile = request.urlgen(
+ "mediagoblin.api.user.profile",
+ username=request.user.username,
+ qualified=True
+ )
+
+ return redirect(request, location=profile)
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 6923e198..345aa048 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -16,6 +16,7 @@
import os
import logging
+from contextlib import contextmanager
from mediagoblin.routing import get_url_map
from mediagoblin.tools.routing import endpoint_to_controller
@@ -23,6 +24,7 @@ from mediagoblin.tools.routing import endpoint_to_controller
from werkzeug.wrappers import Request
from werkzeug.exceptions import HTTPException
from werkzeug.routing import RequestRedirect
+from werkzeug.wsgi import SharedDataMiddleware
from mediagoblin import meddleware, __version__
from mediagoblin.db.util import check_db_up_to_date
@@ -41,10 +43,25 @@ from mediagoblin.tools.pluginapi import PluginManager, hook_transform
from mediagoblin.tools.crypto import setup_crypto
from mediagoblin.auth.tools import check_auth_enabled, no_auth_logout
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
_log = logging.getLogger(__name__)
+class Context(object):
+ """
+ MediaGoblin context object.
+
+ If a web request is being used, a Flask Request object is used
+ instead, otherwise (celery tasks, etc), attach things to this
+ object.
+
+ Usually appears as "ctx" in utilities as first argument.
+ """
+ pass
+
+
class MediaGoblinApp(object):
"""
WSGI application of MediaGoblin
@@ -68,11 +85,11 @@ class MediaGoblinApp(object):
##############
# Open and setup the config
- global_config, app_config = setup_global_and_app_config(config_path)
+ self.global_config, self.app_config = setup_global_and_app_config(config_path)
media_type_warning()
- setup_crypto()
+ setup_crypto(self.app_config)
##########################################
# Setup other connections / useful objects
@@ -90,17 +107,22 @@ class MediaGoblinApp(object):
setup_plugins()
# Set up the database
- self.db = setup_database(app_config['run_migrations'])
+ if DISABLE_GLOBALS:
+ self.db_manager = setup_database(self)
+ else:
+ self.db = setup_database(self)
# Quit app if need to run dbupdate
- check_db_up_to_date()
+ ## NOTE: This is currently commented out due to session errors..
+ ## We'd like to re-enable!
+ # check_db_up_to_date()
# Register themes
- self.theme_registry, self.current_theme = register_themes(app_config)
+ self.theme_registry, self.current_theme = register_themes(self.app_config)
# Get the template environment
self.template_loader = get_jinja_loader(
- app_config.get('local_templates'),
+ self.app_config.get('local_templates'),
self.current_theme,
PluginManager().get_template_paths()
)
@@ -108,7 +130,7 @@ class MediaGoblinApp(object):
# Check if authentication plugin is enabled and respond accordingly.
self.auth = check_auth_enabled()
if not self.auth:
- app_config['allow_comments'] = False
+ self.app_config['allow_comments'] = False
# Set up storage systems
self.public_store, self.queue_store = setup_storage()
@@ -117,16 +139,16 @@ class MediaGoblinApp(object):
self.url_map = get_url_map()
# set up staticdirector tool
- self.staticdirector = get_staticdirector(app_config)
+ self.staticdirector = get_staticdirector(self.app_config)
# Setup celery, if appropriate
- if setup_celery and not app_config.get('celery_setup_elsewhere'):
+ if setup_celery and not self.app_config.get('celery_setup_elsewhere'):
if os.environ.get('CELERY_ALWAYS_EAGER', 'false').lower() == 'true':
setup_celery_from_config(
- app_config, global_config,
+ self.app_config, self.global_config,
force_celery_always_eager=True)
else:
- setup_celery_from_config(app_config, global_config)
+ setup_celery_from_config(self.app_config, self.global_config)
#######################################################
# Insert appropriate things into mediagoblin.mg_globals
@@ -134,27 +156,105 @@ class MediaGoblinApp(object):
# certain properties need to be accessed globally eg from
# validators, etc, which might not access to the request
# object.
+ #
+ # Note, we are trying to transition this out;
+ # run with environment variable DISABLE_GLOBALS=true
+ # to work on it
#######################################################
- setup_globals(app=self)
+ if not DISABLE_GLOBALS:
+ setup_globals(app=self)
# Workbench *currently* only used by celery, so this only
# matters in always eager mode :)
- setup_workbench()
+ self.workbench_manager = setup_workbench()
# instantiate application meddleware
self.meddleware = [common.import_component(m)(self)
for m in meddleware.ENABLED_MEDDLEWARE]
+ @contextmanager
+ def gen_context(self, ctx=None, **kwargs):
+ """
+ Attach contextual information to request, or generate a context object
+
+ This avoids global variables; various utilities and contextual
+ information (current translation, etc) are attached to this
+ object.
+ """
+ if DISABLE_GLOBALS:
+ with self.db_manager.session_scope() as db:
+ yield self._gen_context(db, ctx)
+ else:
+ yield self._gen_context(self.db, ctx)
+
+ def _gen_context(self, db, ctx, **kwargs):
+ # Set up context
+ # --------------
+
+ # Is a context provided?
+ if ctx is None:
+ ctx = Context()
+
+ # Attach utilities
+ # ----------------
+
+ # Attach self as request.app
+ # Also attach a few utilities from request.app for convenience?
+ ctx.app = self
+
+ ctx.db = db
+
+ ctx.staticdirect = self.staticdirector
+
+ # Do special things if this is a request
+ # --------------------------------------
+ if isinstance(ctx, Request):
+ ctx = self._request_only_gen_context(ctx)
+
+ return ctx
+
+ def _request_only_gen_context(self, request):
+ """
+ Requests get some extra stuff attached to them that's not relevant
+ otherwise.
+ """
+ # Do we really want to load this via middleware? Maybe?
+ request.session = self.session_manager.load_session_from_cookie(request)
+
+ request.locale = translate.get_locale_from_request(request)
+
+ # This should be moved over for certain, but how to deal with
+ # request.locale?
+ request.template_env = template.get_jinja_env(
+ self, self.template_loader, request.locale)
+
+ mg_request.setup_user_in_request(request)
+
+ ## Routing / controller loading stuff
+ request.map_adapter = self.url_map.bind_to_environ(request.environ)
+
+ def build_proxy(endpoint, **kw):
+ try:
+ qualified = kw.pop('qualified')
+ except KeyError:
+ qualified = False
+
+ return request.map_adapter.build(
+ endpoint,
+ values=dict(**kw),
+ force_external=qualified)
+
+ request.urlgen = build_proxy
+
+ return request
+
def call_backend(self, environ, start_response):
request = Request(environ)
# Compatibility with django, use request.args preferrably
request.GET = request.args
- ## Routing / controller loading stuff
- map_adapter = self.url_map.bind_to_environ(request.environ)
-
# By using fcgi, mediagoblin can run under a base path
# like /mediagoblin/. request.path_info contains the
# path inside mediagoblin. If the something needs the
@@ -172,41 +272,16 @@ class MediaGoblinApp(object):
environ.pop('HTTPS')
## Attach utilities to the request object
- # Do we really want to load this via middleware? Maybe?
- session_manager = self.session_manager
- request.session = session_manager.load_session_from_cookie(request)
- # Attach self as request.app
- # Also attach a few utilities from request.app for convenience?
- request.app = self
-
- request.db = self.db
- request.staticdirect = self.staticdirector
-
- request.locale = translate.get_locale_from_request(request)
- request.template_env = template.get_jinja_env(
- self.template_loader, request.locale)
-
- def build_proxy(endpoint, **kw):
- try:
- qualified = kw.pop('qualified')
- except KeyError:
- qualified = False
-
- return map_adapter.build(
- endpoint,
- values=dict(**kw),
- force_external=qualified)
-
- request.urlgen = build_proxy
+ with self.gen_context(request) as request:
+ return self._finish_call_backend(request, environ, start_response)
+ def _finish_call_backend(self, request, environ, start_response):
# Log user out if authentication_disabled
no_auth_logout(request)
- mg_request.setup_user_in_request(request)
-
request.controller_name = None
try:
- found_rule, url_values = map_adapter.match(return_rule=True)
+ found_rule, url_values = request.map_adapter.match(return_rule=True)
request.matchdict = url_values
except RequestRedirect as response:
# Deal with 301 responses eg due to missing final slash
@@ -222,6 +297,7 @@ class MediaGoblinApp(object):
# used for lazy context modification
request.controller_name = found_rule.endpoint
+ ## TODO: get rid of meddleware, turn it into hooks only
# pass the request through our meddleware classes
try:
for m in self.meddleware:
@@ -252,8 +328,9 @@ class MediaGoblinApp(object):
response = render_http_exception(
request, e, e.get_description(environ))
- session_manager.save_session_to_cookie(request.session,
- request, response)
+ self.session_manager.save_session_to_cookie(
+ request.session,
+ request, response)
return response(environ, start_response)
@@ -264,9 +341,10 @@ class MediaGoblinApp(object):
try:
return self.call_backend(environ, start_response)
finally:
- # Reset the sql session, so that the next request
- # gets a fresh session
- self.db.reset_after_request()
+ if not DISABLE_GLOBALS:
+ # Reset the sql session, so that the next request
+ # gets a fresh session
+ self.db.reset_after_request()
def paste_app_factory(global_config, **app_config):
@@ -279,8 +357,11 @@ def paste_app_factory(global_config, **app_config):
if not mediagoblin_config:
raise IOError("Usable mediagoblin config not found.")
+ del app_config['config']
mgoblin_app = MediaGoblinApp(mediagoblin_config)
+ mgoblin_app.call_backend = SharedDataMiddleware(mgoblin_app.call_backend,
+ exports=app_config)
mgoblin_app = hook_transform('wrap_wsgi', mgoblin_app)
return mgoblin_app
diff --git a/mediagoblin/auth/tools.py b/mediagoblin/auth/tools.py
index 39df85af..ae6fadf6 100644
--- a/mediagoblin/auth/tools.py
+++ b/mediagoblin/auth/tools.py
@@ -16,12 +16,14 @@
import logging
+
+import six
import wtforms
from sqlalchemy import or_
from mediagoblin import mg_globals
from mediagoblin.tools.crypto import get_timed_signer_url
-from mediagoblin.db.models import User, Privilege
+from mediagoblin.db.models import LocalUser, Privilege
from mediagoblin.tools.mail import (normalize_email, send_email,
email_debug_message)
from mediagoblin.tools.template import render_template
@@ -32,14 +34,19 @@ from mediagoblin import auth
_log = logging.getLogger(__name__)
-def normalize_user_or_email_field(allow_email=True, allow_user=True):
- """
- Check if we were passed a field that matches a username and/or email
+def normalize_user_or_email_field(allow_email=True, allow_user=True,
+ is_login=False):
+ """Check if we were passed a field that matches a username and/or email
pattern.
This is useful for fields that can take either a username or email
- address. Use the parameters if you want to only allow a username for
- instance"""
+ address. Use the parameters if you want to only allow a username
+ for instance
+
+ is_login : bool
+ If is_login is True, does not check the length of username.
+
+ """
message = _(u'Invalid User name or email address.')
nomail_msg = _(u"This field does not take email addresses.")
nouser_msg = _(u"This field requires an email address.")
@@ -54,8 +61,9 @@ def normalize_user_or_email_field(allow_email=True, allow_user=True):
else: # lower case user names
if not allow_user:
raise wtforms.ValidationError(nouser_msg)
- wtforms.validators.Length(min=3, max=30)(form, field)
- wtforms.validators.Regexp(r'^\w+$')(form, field)
+ if not is_login:
+ wtforms.validators.Length(min=3, max=30)(form, field)
+ wtforms.validators.Regexp(r'^[-_\w]+$')(form, field)
field.data = field.data.lower()
if field.data is None: # should not happen, but be cautious anyway
raise wtforms.ValidationError(message)
@@ -104,9 +112,9 @@ def send_verification_email(user, request, email=None,
def basic_extra_validation(register_form, *args):
- users_with_username = User.query.filter_by(
+ users_with_username = LocalUser.query.filter_by(
username=register_form.username.data).count()
- users_with_email = User.query.filter_by(
+ users_with_email = LocalUser.query.filter_by(
email=register_form.email.data).count()
extra_validation_passes = True
@@ -136,7 +144,7 @@ def register_user(request, register_form):
user.save()
# log the user in
- request.session['user_id'] = unicode(user.id)
+ request.session['user_id'] = six.text_type(user.id)
request.session.save()
# send verification email
@@ -182,13 +190,13 @@ def no_auth_logout(request):
Log out the user if no authentication is enabled, but don't delete
the messages
"""
- if not mg_globals.app.auth and 'user_id' in request.session:
+ if not request.app.auth and 'user_id' in request.session:
del request.session['user_id']
request.session.save()
def create_basic_user(form):
- user = User()
+ user = LocalUser()
user.username = form.username.data
user.email = form.email.data
user.save()
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 3d132f84..2f95fd81 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from itsdangerous import BadSignature
from mediagoblin import messages, mg_globals
@@ -84,16 +86,17 @@ def login(request):
login_failed = False
if request.method == 'POST':
- username = login_form.username.data
if login_form.validate():
- user = check_login_simple(username, login_form.password.data)
+ user = check_login_simple(
+ login_form.username.data,
+ login_form.password.data)
if user:
# set up login in session
if login_form.stay_logged_in.data:
request.session['stay_logged_in'] = True
- request.session['user_id'] = unicode(user.id)
+ request.session['user_id'] = six.text_type(user.id)
request.session.save()
if request.form.get('next'):
@@ -192,7 +195,7 @@ def resend_activation(request):
messages.ERROR,
_("You've already verified your email address!"))
- return redirect(request, "mediagoblin.user_pages.user_home", user=request.user['username'])
+ return redirect(request, "mediagoblin.user_pages.user_home", user=request.user.username)
email_debug_message(request)
send_verification_email(request.user, request)
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index ba2b4519..0a8da73e 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -1,9 +1,12 @@
+[DEFAULT]
+data_basedir = %(here)s/user_dev
+
[mediagoblin]
# HTML title of the pages
html_title = string(default="GNU MediaGoblin")
# link to source for this MediaGoblin site
-source_link = string(default="https://gitorious.org/mediagoblin/mediagoblin")
+source_link = string(default="https://savannah.gnu.org/git/?group=mediagoblin")
# database stuff
sql_engine = string(default="sqlite:///%(here)s/mediagoblin.db")
@@ -13,23 +16,39 @@ sql_engine = string(default="sqlite:///%(here)s/mediagoblin.db")
run_migrations = boolean(default=False)
# Where temporary files used in processing and etc are kept
-workbench_path = string(default="%(here)s/user_dev/media/workbench")
+workbench_path = string(default="%(data_basedir)s/media/workbench")
# Where to store cryptographic sensible data
-crypto_path = string(default="%(here)s/user_dev/crypto")
+crypto_path = string(default="%(data_basedir)s/crypto")
# Where mediagoblin-builtin static assets are kept
direct_remote_path = string(default="/mgoblin_static/")
# set to false to enable sending notices
email_debug_mode = boolean(default=True)
+
+# Uses SSL/TLS when connecting to SMTP server
email_smtp_use_ssl = boolean(default=False)
+
+# Uses STARTTLS when connecting to SMTP server
+email_smtp_force_starttls = boolean(default=False)
+
+# Email address which notices are sent from
email_sender_address = string(default="notice@mediagoblin.example.org")
+
+# Hostname of SMTP server
email_smtp_host = string(default='')
+
+# Port for SMTP server
email_smtp_port = integer(default=0)
+
+# Username used for SMTP server
email_smtp_user = string(default=None)
+
+# Password used for SMTP server
email_smtp_pass = string(default=None)
+
# Set to false to disable registrations
allow_registration = boolean(default=True)
@@ -51,7 +70,7 @@ allow_reporting = boolean(default=True)
show_tos = boolean(default=False)
# By default not set, but you might want something like:
-# "%(here)s/user_dev/templates/"
+# "%(data_basedir)s/templates/"
local_templates = string()
# Whether or not celery is set up via an environment variable or
@@ -67,6 +86,9 @@ allow_attachments = boolean(default=False)
# Cookie stuff
csrf_cookie_name = string(default='mediagoblin_csrftoken')
+# Set to true to prevent browsers leaking information through Referrers
+no_referrer = boolean(default=True)
+
# Push stuff
push_urls = string_list(default=list())
@@ -74,14 +96,14 @@ exif_visible = boolean(default=False)
original_date_visible = boolean(default=False)
# Theming stuff
-theme_install_dir = string(default="%(here)s/user_dev/themes/")
+theme_install_dir = string(default="%(data_basedir)s/themes/")
theme_web_path = string(default="/theme_static/")
-theme_linked_assets_dir = string(default="%(here)s/user_dev/theme_static/")
+theme_linked_assets_dir = string(default="%(data_basedir)s/theme_static/")
theme = string()
# plugin default assets directory
plugin_web_path = string(default="/plugin_static/")
-plugin_linked_assets_dir = string(default="%(here)s/user_dev/plugin_static/")
+plugin_linked_assets_dir = string(default="%(data_basedir)s/plugin_static/")
# Default user upload limit (in Mb)
upload_limit = integer(default=None)
@@ -92,6 +114,10 @@ max_file_size = integer(default=None)
# Privilege scheme
user_privilege_scheme = string(default="uploader,commenter,reporter")
+# Frequency garbage collection will run (setting to 0 or false to disable)
+# Setting units are minutes.
+garbage_collection = integer(default=60)
+
[jinja2]
# Jinja2 supports more directives than the minimum required by mediagoblin.
# This setting allows users creating custom templates to specify a list of
@@ -101,12 +127,12 @@ extensions = string_list(default=list())
[storage:publicstore]
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
-base_dir = string(default="%(here)s/user_dev/media/public")
+base_dir = string(default="%(data_basedir)s/media/public")
base_url = string(default="/mgoblin_media/")
[storage:queuestore]
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
-base_dir = string(default="%(here)s/user_dev/media/queue")
+base_dir = string(default="%(data_basedir)s/media/queue")
[media:medium]
# Dimensions used when creating media display images.
diff --git a/mediagoblin/db/__init__.py b/mediagoblin/db/__init__.py
index 719b56e7..621845ba 100644
--- a/mediagoblin/db/__init__.py
+++ b/mediagoblin/db/__init__.py
@@ -13,4 +13,3 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/mediagoblin/db/base.py b/mediagoblin/db/base.py
index c0cefdc2..c59b0ebf 100644
--- a/mediagoblin/db/base.py
+++ b/mediagoblin/db/base.py
@@ -13,16 +13,60 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+import six
+import copy
from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy.orm import scoped_session, sessionmaker, object_session
+from sqlalchemy import inspect
+
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
+if not DISABLE_GLOBALS:
+ from sqlalchemy.orm import scoped_session, sessionmaker
+ Session = scoped_session(sessionmaker())
+
+class FakeCursor(object):
-Session = scoped_session(sessionmaker())
+ def __init__ (self, cursor, mapper, filter=None):
+ self.cursor = cursor
+ self.mapper = mapper
+ self.filter = filter
+ def count(self):
+ return self.cursor.count()
+
+ def __copy__(self):
+ # Or whatever the function is named to make
+ # copy.copy happy?
+ return FakeCursor(copy.copy(self.cursor), self.mapper, self.filter)
+
+ def __iter__(self):
+ return six.moves.filter(self.filter, six.moves.map(self.mapper, self.cursor))
+
+ def __getitem__(self, key):
+ return self.mapper(self.cursor[key])
+
+ def slice(self, *args, **kwargs):
+ r = self.cursor.slice(*args, **kwargs)
+ return list(six.moves.filter(self.filter, six.moves.map(self.mapper, r)))
class GMGTableBase(object):
- query = Session.query_property()
+ # Deletion types
+ HARD_DELETE = "hard-deletion"
+ SOFT_DELETE = "soft-deletion"
+
+ deletion_mode = HARD_DELETE
+
+ @property
+ def _session(self):
+ return inspect(self).session
+
+ @property
+ def _app(self):
+ return self._session.bind.app
+
+ if not DISABLE_GLOBALS:
+ query = Session.query_property()
def get(self, key):
return getattr(self, key)
@@ -31,16 +75,116 @@ class GMGTableBase(object):
# The key *has* to exist on sql.
return getattr(self, key)
- def save(self):
- sess = object_session(self)
- if sess is None:
+ def save(self, commit=True):
+ sess = self._session
+ if sess is None and not DISABLE_GLOBALS:
sess = Session()
+ assert sess is not None, "Can't save, %r has a detached session" % self
sess.add(self)
- sess.commit()
+ if commit:
+ sess.commit()
+ else:
+ sess.flush()
+
+ def delete(self, commit=True, deletion=None):
+ """ Delete the object either using soft or hard deletion """
+ # Get the setting in the model args if none has been specified.
+ if deletion is None:
+ deletion = self.deletion_mode
+
+ # If the item is in any collection then it should be removed, this will
+ # cause issues if it isn't. See #5382.
+ # Import here to prevent cyclic imports.
+ from mediagoblin.db.models import CollectionItem, GenericModelReference, \
+ Report, Notification, Comment
+
+ # Some of the models don't have an "id" field which means they can't be
+ # used with GMR, these models won't be in collections because they
+ # can't be. We can skip all of this.
+ if hasattr(self, "id"):
+ # First find the GenericModelReference for this object
+ gmr = GenericModelReference.query.filter_by(
+ obj_pk=self.id,
+ model_type=self.__tablename__
+ ).first()
+
+ # If there is no gmr then we've got lucky, a GMR is a requirement of
+ # being in a collection.
+ if gmr is not None:
+ # Delete collections found
+ items = CollectionItem.query.filter_by(
+ object_id=gmr.id
+ )
+ items.delete()
+
+ # Delete notifications found
+ notifications = Notification.query.filter_by(
+ object_id=gmr.id
+ )
+ notifications.delete()
+
+ # Delete this as a comment
+ comments = Comment.query.filter_by(
+ comment_id=gmr.id
+ )
+ comments.delete()
+
+ # Set None on reports found
+ reports = Report.query.filter_by(
+ object_id=gmr.id
+ )
+ for report in reports:
+ report.object_id = None
+ report.save(commit=commit)
+
+ # Hand off to the correct deletion function.
+ if deletion == self.HARD_DELETE:
+ return self.hard_delete(commit=commit)
+ elif deletion == self.SOFT_DELETE:
+ return self.soft_delete(commit=commit)
+ else:
+ raise ValueError(
+ "Invalid deletion mode {mode!r}".format(
+ mode=deletion
+ )
+ )
+
+ def soft_delete(self, commit):
+ # Create the graveyard version of this model
+ # Importing this here due to cyclic imports
+ from mediagoblin.db.models import User, Graveyard, GenericModelReference
+
+ tombstone = Graveyard()
+ if getattr(self, "public_id", None) is not None:
+ tombstone.public_id = self.public_id
+
+ # This is a special case, we don't want to save any actor if the thing
+ # being soft deleted is a User model as this would create circular
+ # ForeignKeys
+ if not isinstance(self, User):
+ tombstone.actor = User.query.filter_by(
+ id=self.actor
+ ).first()
+ tombstone.object_type = self.object_type
+ tombstone.save(commit=False)
+
+ # There will be a lot of places where the GenericForeignKey will point
+ # to the model, we want to remap those to our tombstone.
+ gmrs = GenericModelReference.query.filter_by(
+ obj_pk=self.id,
+ model_type=self.__tablename__
+ ).update({
+ "obj_pk": tombstone.id,
+ "model_type": tombstone.__tablename__,
+ })
+
+
+ # Now we can go ahead and actually delete the model.
+ return self.hard_delete(commit=commit)
- def delete(self, commit=True):
+ def hard_delete(self, commit):
"""Delete the object and commit the change immediately by default"""
- sess = object_session(self)
+ sess = self._session
assert sess is not None, "Not going to delete detached %r" % self
sess.delete(self)
if commit:
diff --git a/mediagoblin/db/migration_tools.py b/mediagoblin/db/migration_tools.py
index e39070c3..f4273fa0 100644
--- a/mediagoblin/db/migration_tools.py
+++ b/mediagoblin/db/migration_tools.py
@@ -14,10 +14,24 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import unicode_literals
+
+import logging
+import os
+import pkg_resources
+
+from alembic import command
+from alembic.config import Config
+from alembic.migration import MigrationContext
+
+from mediagoblin.db.base import Base
from mediagoblin.tools.common import simple_printer
from sqlalchemy import Table
from sqlalchemy.sql import select
+log = logging.getLogger(__name__)
+
+
class TableAlreadyExists(Exception):
pass
@@ -30,7 +44,7 @@ class MigrationManager(object):
to the latest migrations, etc.
"""
- def __init__(self, name, models, foundations, migration_registry, session,
+ def __init__(self, name, models, migration_registry, session,
printer=simple_printer):
"""
Args:
@@ -39,9 +53,8 @@ class MigrationManager(object):
- migration_registry: where we should find all migrations to
run
"""
- self.name = unicode(name)
+ self.name = name
self.models = models
- self.foundations = foundations
self.session = session
self.migration_registry = migration_registry
self._sorted_migrations = None
@@ -112,14 +125,14 @@ class MigrationManager(object):
def migrations_to_run(self):
"""
Get a list of migrations to run still, if any.
-
+
Note that this will fail if there's no migration record for
this class!
"""
assert self.database_current_migration is not None
db_current_migration = self.database_current_migration
-
+
return [
(migration_number, migration_func)
for migration_number, migration_func in self.sorted_migrations
@@ -142,18 +155,6 @@ class MigrationManager(object):
self.session.bind,
tables=[model.__table__ for model in self.models])
- def populate_table_foundations(self):
- """
- Create the table foundations (default rows) as layed out in FOUNDATIONS
- in mediagoblin.db.models
- """
- for Model, rows in self.foundations.items():
- self.printer(u' + Laying foundations for %s table\n' %
- (Model.__name__))
- for parameters in rows:
- new_row = Model(**parameters)
- self.session.add(new_row)
-
def create_new_migration_record(self):
"""
Create a new migration record for this migration set
@@ -184,7 +185,7 @@ class MigrationManager(object):
migration_number, migration_func.func_name))
return u'migrated'
-
+
def name_for_printing(self):
if self.name == u'__main__':
return u"main mediagoblin tables"
@@ -218,7 +219,6 @@ class MigrationManager(object):
# auto-set at latest migration number
self.create_new_migration_record()
self.printer(u"done.\n")
- self.populate_table_foundations()
self.set_current_migration()
return u'inited'
@@ -230,7 +230,7 @@ class MigrationManager(object):
for migration_number, migration_func in migrations_to_run:
self.printer(
u' + Running migration %s, "%s"... ' % (
- migration_number, migration_func.func_name))
+ migration_number, migration_func.__name__))
migration_func(self.session)
self.set_current_migration(migration_number)
self.printer('done.\n')
@@ -263,6 +263,8 @@ class RegisterMigration(object):
assert migration_number > 0, "Migration number must be > 0!"
assert migration_number not in migration_registry, \
"Duplicate migration numbers detected! That's not allowed!"
+ assert migration_number <= 44, ('Alembic should be used for '
+ 'new migrations')
self.migration_number = migration_number
self.migration_registry = migration_registry
@@ -295,7 +297,7 @@ def replace_table_hack(db, old_table, replacement_table):
-tion, for example, dropping a boolean column in sqlite is impossible w/o
this method
- :param old_table A ref to the old table, gotten through
+ :param old_table A ref to the old table, gotten through
inspect_table
:param replacement_table A ref to the new table, gotten through
@@ -319,3 +321,74 @@ def replace_table_hack(db, old_table, replacement_table):
replacement_table.rename(old_table_name)
db.commit()
+
+def model_iteration_hack(db, query):
+ """
+ This will return either the query you gave if it's postgres or in the case
+ of sqlite it will return a list with all the results. This is because in
+ migrations it seems sqlite can't deal with concurrent quries so if you're
+ iterating over models and doing a commit inside the loop, you will run into
+ an exception which says you've closed the connection on your iteration
+ query. This fixes it.
+
+ NB: This loads all of the query reuslts into memeory, there isn't a good
+ way around this, we're assuming sqlite users have small databases.
+ """
+ # If it's SQLite just return all the objects
+ if db.bind.url.drivername == "sqlite":
+ return [obj for obj in db.execute(query)]
+
+ # Postgres return the query as it knows how to deal with it.
+ return db.execute(query)
+
+
+def populate_table_foundations(session, foundations, name,
+ printer=simple_printer):
+ """
+ Create the table foundations (default rows) as layed out in FOUNDATIONS
+ in mediagoblin.db.models
+ """
+ printer(u'Laying foundations for %s:\n' % name)
+ for Model, rows in foundations.items():
+ printer(u' + Laying foundations for %s table\n' %
+ (Model.__name__))
+ for parameters in rows:
+ new_row = Model(**parameters)
+ session.add(new_row)
+
+ session.commit()
+
+
+def build_alembic_config(global_config, cmd_options, session):
+ """
+ Build up a config that the alembic tooling can use based on our
+ configuration. Initialize the database session appropriately
+ as well.
+ """
+ root_dir = os.path.abspath(os.path.dirname(os.path.dirname(
+ os.path.dirname(__file__))))
+ alembic_cfg_path = os.path.join(root_dir, 'alembic.ini')
+ cfg = Config(alembic_cfg_path,
+ cmd_opts=cmd_options)
+ cfg.attributes["session"] = session
+
+ version_locations = [
+ pkg_resources.resource_filename(
+ "mediagoblin.db", os.path.join("migrations", "versions")),
+ ]
+
+ cfg.set_main_option("sqlalchemy.url", str(session.get_bind().url))
+
+ for plugin in global_config.get("plugins", []):
+ plugin_migrations = pkg_resources.resource_filename(
+ plugin, "migrations")
+ is_migrations_dir = (os.path.exists(plugin_migrations) and
+ os.path.isdir(plugin_migrations))
+ if is_migrations_dir:
+ version_locations.append(plugin_migrations)
+
+ cfg.set_main_option(
+ "version_locations",
+ " ".join(version_locations))
+
+ return cfg
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 8e0b5096..55d64294 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -14,25 +14,43 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
+
import datetime
import uuid
+import six
+
+try:
+ import migrate
+except ImportError:
+ # Apparently sqlalchemy-migrate is not installed, so we assume
+ # we must not need it
+ # TODO: Better error handling here, or require sqlalchemy-migrate
+ print("sqlalchemy-migrate not found... assuming we don't need it")
+ print("I hope you aren't running the legacy migrations!")
+
+import pytz
+import dateutil.tz
from sqlalchemy import (MetaData, Table, Column, Boolean, SmallInteger,
Integer, Unicode, UnicodeText, DateTime,
- ForeignKey, Date)
+ ForeignKey, Date, Index)
from sqlalchemy.exc import ProgrammingError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import and_
-from migrate.changeset.constraint import UniqueConstraint
-
+from sqlalchemy.schema import UniqueConstraint
+from mediagoblin import oauth
+from mediagoblin.tools import crypto
from mediagoblin.db.extratypes import JSONEncoded, MutationDict
from mediagoblin.db.migration_tools import (
- RegisterMigration, inspect_table, replace_table_hack)
-from mediagoblin.db.models import (MediaEntry, Collection, MediaComment, User,
- Privilege)
+ RegisterMigration, inspect_table, replace_table_hack, model_iteration_hack)
+from mediagoblin.db.models import (MediaEntry, Collection, Comment, User,
+ Privilege, Generator, LocalUser, Location,
+ Client, RequestToken, AccessToken)
from mediagoblin.db.extratypes import JSONEncoded, MutationDict
+
MIGRATIONS = {}
@@ -249,7 +267,7 @@ def mediaentry_new_slug_era(db):
for row in db.execute(media_table.select()):
# no slug, try setting to an id
if not row.slug:
- append_garbage_till_unique(row, unicode(row.id))
+ append_garbage_till_unique(row, six.text_type(row.id))
# has "=" or ":" in it... we're getting rid of those
elif u"=" in row.slug or u":" in row.slug:
append_garbage_till_unique(
@@ -278,7 +296,7 @@ def unique_collections_slug(db):
existing_slugs[row.creator].append(row.slug)
for row_id in slugs_to_change:
- new_slug = unicode(uuid.uuid4())
+ new_slug = six.text_type(uuid.uuid4())
db.execute(collection_table.update().
where(collection_table.c.id == row_id).
values(slug=new_slug))
@@ -343,7 +361,7 @@ class CommentNotification_v0(Notification_v0):
__tablename__ = 'core__comment_notifications'
id = Column(Integer, ForeignKey(Notification_v0.id), primary_key=True)
- subject_id = Column(Integer, ForeignKey(MediaComment.id))
+ subject_id = Column(Integer, ForeignKey(Comment.id))
class ProcessingNotification_v0(Notification_v0):
@@ -466,7 +484,6 @@ def create_oauth1_tables(db):
db.commit()
-
@RegisterMigration(15, MIGRATIONS)
def wants_notifications(db):
"""Add a wants_notifications field to User model"""
@@ -533,7 +550,7 @@ class CommentReport_v0(ReportBase_v0):
id = Column('id',Integer, ForeignKey('core__reports.id'),
primary_key=True)
- comment_id = Column(Integer, ForeignKey(MediaComment.id), nullable=True)
+ comment_id = Column(Integer, ForeignKey(Comment.id), nullable=True)
class MediaReport_v0(ReportBase_v0):
@@ -579,7 +596,6 @@ PRIVILEGE_FOUNDATIONS_v0 = [{'privilege_name':u'admin'},
{'privilege_name':u'commenter'},
{'privilege_name':u'active'}]
-
# vR1 stands for "version Rename 1". This only exists because we need
# to deal with dropping some booleans and it's otherwise impossible
# with sqlite.
@@ -660,8 +676,8 @@ def create_moderation_tables(db):
# admin, an active user or an inactive user ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for admin_user in admin_users_ids:
admin_user_id = admin_user['id']
- for privilege_id in [admin_privilege_id, uploader_privilege_id,
- reporter_privilege_id, commenter_privilege_id,
+ for privilege_id in [admin_privilege_id, uploader_privilege_id,
+ reporter_privilege_id, commenter_privilege_id,
active_privilege_id]:
db.execute(user_privilege_assoc.insert().values(
core__privilege_id=admin_user_id,
@@ -669,7 +685,7 @@ def create_moderation_tables(db):
for active_user in active_users_ids:
active_user_id = active_user['id']
- for privilege_id in [uploader_privilege_id, reporter_privilege_id,
+ for privilege_id in [uploader_privilege_id, reporter_privilege_id,
commenter_privilege_id, active_privilege_id]:
db.execute(user_privilege_assoc.insert().values(
core__privilege_id=active_user_id,
@@ -677,7 +693,7 @@ def create_moderation_tables(db):
for inactive_user in inactive_users_ids:
inactive_user_id = inactive_user['id']
- for privilege_id in [uploader_privilege_id, reporter_privilege_id,
+ for privilege_id in [uploader_privilege_id, reporter_privilege_id,
commenter_privilege_id]:
db.execute(user_privilege_assoc.insert().values(
core__privilege_id=inactive_user_id,
@@ -789,3 +805,1426 @@ def fix_privilege_user_association_table(db):
privilege_user_assoc.c.core__privilege_id.alter(name="user")
db.commit()
+
+
+@RegisterMigration(22, MIGRATIONS)
+def add_index_username_field(db):
+ """
+ This migration has been found to be doing the wrong thing. See
+ the documentation in migration 23 (revert_username_index) below
+ which undoes this for those databases that did run this migration.
+
+ Old description:
+ This indexes the User.username field which is frequently queried
+ for example a user logging in. This solves the issue #894
+ """
+ ## This code is left commented out *on purpose!*
+ ##
+ ## We do not normally allow commented out code like this in
+ ## MediaGoblin but this is a special case: since this migration has
+ ## been nullified but with great work to set things back below,
+ ## this is commented out for historical clarity.
+ #
+ # metadata = MetaData(bind=db.bind)
+ # user_table = inspect_table(metadata, "core__users")
+ #
+ # new_index = Index("ix_core__users_uploader", user_table.c.username)
+ # new_index.create()
+ #
+ # db.commit()
+ pass
+
+
+@RegisterMigration(23, MIGRATIONS)
+def revert_username_index(db):
+ """
+ Revert the stuff we did in migration 22 above.
+
+ There were a couple of problems with what we did:
+ - There was never a need for this migration! The unique
+ constraint had an implicit b-tree index, so it wasn't really
+ needed. (This is my (Chris Webber's) fault for suggesting it
+ needed to happen without knowing what's going on... my bad!)
+ - On top of that, databases created after the models.py was
+ changed weren't the same as those that had been run through
+ migration 22 above.
+
+ As such, we're setting things back to the way they were before,
+ but as it turns out, that's tricky to do!
+ """
+ metadata = MetaData(bind=db.bind)
+ user_table = inspect_table(metadata, "core__users")
+ indexes = dict(
+ [(index.name, index) for index in user_table.indexes])
+
+ # index from unnecessary migration
+ users_uploader_index = indexes.get(u'ix_core__users_uploader')
+ # index created from models.py after (unique=True, index=True)
+ # was set in models.py
+ users_username_index = indexes.get(u'ix_core__users_username')
+
+ if users_uploader_index is None and users_username_index is None:
+ # We don't need to do anything.
+ # The database isn't in a state where it needs fixing
+ #
+ # (ie, either went through the previous borked migration or
+ # was initialized with a models.py where core__users was both
+ # unique=True and index=True)
+ return
+
+ if db.bind.url.drivername == 'sqlite':
+ # Again, sqlite has problems. So this is tricky.
+
+ # Yes, this is correct to use User_vR1! Nothing has changed
+ # between the *correct* version of this table and migration 18.
+ User_vR1.__table__.create(db.bind)
+ db.commit()
+ new_user_table = inspect_table(metadata, 'rename__users')
+ replace_table_hack(db, user_table, new_user_table)
+
+ else:
+ # If the db is not run using SQLite, we don't need to do crazy
+ # table copying.
+
+ # Remove whichever of the not-used indexes are in place
+ if users_uploader_index is not None:
+ users_uploader_index.drop()
+ if users_username_index is not None:
+ users_username_index.drop()
+
+ # Given we're removing indexes then adding a unique constraint
+ # which *we know might fail*, thus probably rolling back the
+ # session, let's commit here.
+ db.commit()
+
+ try:
+ # Add the unique constraint
+ constraint = UniqueConstraint(
+ 'username', table=user_table)
+ constraint.create()
+ except ProgrammingError:
+ # constraint already exists, no need to add
+ db.rollback()
+
+ db.commit()
+
+class Generator_R0(declarative_base()):
+ __tablename__ = "core__generators"
+ id = Column(Integer, primary_key=True)
+ name = Column(Unicode, nullable=False)
+ published = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ object_type = Column(Unicode, nullable=False)
+
+class ActivityIntermediator_R0(declarative_base()):
+ __tablename__ = "core__activity_intermediators"
+ id = Column(Integer, primary_key=True)
+ type = Column(Unicode, nullable=False)
+
+ # These are needed for migration 29
+ TABLENAMES = {
+ "user": "core__users",
+ "media": "core__media_entries",
+ "comment": "core__media_comments",
+ "collection": "core__collections",
+ }
+
+class Activity_R0(declarative_base()):
+ __tablename__ = "core__activities"
+ id = Column(Integer, primary_key=True)
+ actor = Column(Integer, ForeignKey(User.id), nullable=False)
+ published = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ verb = Column(Unicode, nullable=False)
+ content = Column(Unicode, nullable=True)
+ title = Column(Unicode, nullable=True)
+ generator = Column(Integer, ForeignKey(Generator_R0.id), nullable=True)
+ object = Column(Integer,
+ ForeignKey(ActivityIntermediator_R0.id),
+ nullable=False)
+ target = Column(Integer,
+ ForeignKey(ActivityIntermediator_R0.id),
+ nullable=True)
+
+
+@RegisterMigration(24, MIGRATIONS)
+def activity_migration(db):
+ """
+ Creates everything to create activities in GMG
+ - Adds Activity, ActivityIntermediator and Generator table
+ - Creates GMG service generator for activities produced by the server
+ - Adds the activity_as_object and activity_as_target to objects/targets
+ - Retroactively adds activities for what we can acurately work out
+ """
+ # Set constants we'll use later
+ FOREIGN_KEY = "core__activity_intermediators.id"
+ ACTIVITY_COLUMN = "activity"
+
+ # Create the new tables.
+ ActivityIntermediator_R0.__table__.create(db.bind)
+ Generator_R0.__table__.create(db.bind)
+ Activity_R0.__table__.create(db.bind)
+ db.commit()
+
+ # Initiate the tables we want to use later
+ metadata = MetaData(bind=db.bind)
+ user_table = inspect_table(metadata, "core__users")
+ activity_table = inspect_table(metadata, "core__activities")
+ generator_table = inspect_table(metadata, "core__generators")
+ collection_table = inspect_table(metadata, "core__collections")
+ media_entry_table = inspect_table(metadata, "core__media_entries")
+ media_comments_table = inspect_table(metadata, "core__media_comments")
+ ai_table = inspect_table(metadata, "core__activity_intermediators")
+
+
+ # Create the foundations for Generator
+ db.execute(generator_table.insert().values(
+ name="GNU Mediagoblin",
+ object_type="service",
+ published=datetime.datetime.now(),
+ updated=datetime.datetime.now()
+ ))
+ db.commit()
+
+ # Get the ID of that generator
+ gmg_generator = db.execute(generator_table.select(
+ generator_table.c.name==u"GNU Mediagoblin")).first()
+
+
+ # Now we want to modify the tables which MAY have an activity at some point
+ media_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
+ media_col.create(media_entry_table)
+
+ user_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
+ user_col.create(user_table)
+
+ comments_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
+ comments_col.create(media_comments_table)
+
+ collection_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
+ collection_col.create(collection_table)
+ db.commit()
+
+
+ # Now we want to retroactively add what activities we can
+ # first we'll add activities when people uploaded media.
+ # these can't have content as it's not fesible to get the
+ # correct content strings.
+ for media in db.execute(media_entry_table.select()):
+ # Now we want to create the intermedaitory
+ db_ai = db.execute(ai_table.insert().values(
+ type="media",
+ ))
+ db_ai = db.execute(ai_table.select(
+ ai_table.c.id==db_ai.inserted_primary_key[0]
+ )).first()
+
+ # Add the activity
+ activity = {
+ "verb": "create",
+ "actor": media.uploader,
+ "published": media.created,
+ "updated": media.created,
+ "generator": gmg_generator.id,
+ "object": db_ai.id
+ }
+ db.execute(activity_table.insert().values(**activity))
+
+ # Add the AI to the media.
+ db.execute(media_entry_table.update().values(
+ activity=db_ai.id
+ ).where(media_entry_table.c.id==media.id))
+
+ # Now we want to add all the comments people made
+ for comment in db.execute(media_comments_table.select()):
+ # Get the MediaEntry for the comment
+ media_entry = db.execute(
+ media_entry_table.select(
+ media_entry_table.c.id==comment.media_entry
+ )).first()
+
+ # Create an AI for target
+ db_ai_media = db.execute(ai_table.select(
+ ai_table.c.id==media_entry.activity
+ )).first().id
+
+ db.execute(
+ media_comments_table.update().values(
+ activity=db_ai_media
+ ).where(media_comments_table.c.id==media_entry.id))
+
+ # Now create the AI for the comment
+ db_ai_comment = db.execute(ai_table.insert().values(
+ type="comment"
+ )).inserted_primary_key[0]
+
+ activity = {
+ "verb": "comment",
+ "actor": comment.author,
+ "published": comment.created,
+ "updated": comment.created,
+ "generator": gmg_generator.id,
+ "object": db_ai_comment,
+ "target": db_ai_media,
+ }
+
+ # Now add the comment object
+ db.execute(activity_table.insert().values(**activity))
+
+ # Now add activity to comment
+ db.execute(media_comments_table.update().values(
+ activity=db_ai_comment
+ ).where(media_comments_table.c.id==comment.id))
+
+ # Create 'create' activities for all collections
+ for collection in db.execute(collection_table.select()):
+ # create AI
+ db_ai = db.execute(ai_table.insert().values(
+ type="collection"
+ ))
+ db_ai = db.execute(ai_table.select(
+ ai_table.c.id==db_ai.inserted_primary_key[0]
+ )).first()
+
+ # Now add link the collection to the AI
+ db.execute(collection_table.update().values(
+ activity=db_ai.id
+ ).where(collection_table.c.id==collection.id))
+
+ activity = {
+ "verb": "create",
+ "actor": collection.creator,
+ "published": collection.created,
+ "updated": collection.created,
+ "generator": gmg_generator.id,
+ "object": db_ai.id,
+ }
+
+ db.execute(activity_table.insert().values(**activity))
+
+ # Now add the activity to the collection
+ db.execute(collection_table.update().values(
+ activity=db_ai.id
+ ).where(collection_table.c.id==collection.id))
+
+ db.commit()
+
+class Location_V0(declarative_base()):
+ __tablename__ = "core__locations"
+ id = Column(Integer, primary_key=True)
+ name = Column(Unicode)
+ position = Column(MutationDict.as_mutable(JSONEncoded))
+ address = Column(MutationDict.as_mutable(JSONEncoded))
+
+@RegisterMigration(25, MIGRATIONS)
+def add_location_model(db):
+ """ Add location model """
+ metadata = MetaData(bind=db.bind)
+
+ # Create location table
+ Location_V0.__table__.create(db.bind)
+ db.commit()
+
+ # Inspect the tables we need
+ user = inspect_table(metadata, "core__users")
+ collections = inspect_table(metadata, "core__collections")
+ media_entry = inspect_table(metadata, "core__media_entries")
+ media_comments = inspect_table(metadata, "core__media_comments")
+
+ # Now add location support to the various models
+ col = Column("location", Integer, ForeignKey(Location_V0.id))
+ col.create(user)
+
+ col = Column("location", Integer, ForeignKey(Location_V0.id))
+ col.create(collections)
+
+ col = Column("location", Integer, ForeignKey(Location_V0.id))
+ col.create(media_entry)
+
+ col = Column("location", Integer, ForeignKey(Location_V0.id))
+ col.create(media_comments)
+
+ db.commit()
+
+@RegisterMigration(26, MIGRATIONS)
+def datetime_to_utc(db):
+ """ Convert datetime stamps to UTC """
+ # Get the server's timezone, this is what the database has stored
+ server_timezone = dateutil.tz.tzlocal()
+
+ ##
+ # Look up all the timestamps and convert them to UTC
+ ##
+ metadata = MetaData(bind=db.bind)
+
+ def dt_to_utc(dt):
+ # Add the current timezone
+ dt = dt.replace(tzinfo=server_timezone)
+
+ # Convert to UTC
+ return dt.astimezone(pytz.UTC)
+
+ # Convert the User model
+ user_table = inspect_table(metadata, "core__users")
+ for user in db.execute(user_table.select()):
+ db.execute(user_table.update().values(
+ created=dt_to_utc(user.created)
+ ).where(user_table.c.id==user.id))
+
+ # Convert Client
+ client_table = inspect_table(metadata, "core__clients")
+ for client in db.execute(client_table.select()):
+ db.execute(client_table.update().values(
+ created=dt_to_utc(client.created),
+ updated=dt_to_utc(client.updated)
+ ).where(client_table.c.id==client.id))
+
+ # Convert RequestToken
+ rt_table = inspect_table(metadata, "core__request_tokens")
+ for request_token in db.execute(rt_table.select()):
+ db.execute(rt_table.update().values(
+ created=dt_to_utc(request_token.created),
+ updated=dt_to_utc(request_token.updated)
+ ).where(rt_table.c.token==request_token.token))
+
+ # Convert AccessToken
+ at_table = inspect_table(metadata, "core__access_tokens")
+ for access_token in db.execute(at_table.select()):
+ db.execute(at_table.update().values(
+ created=dt_to_utc(access_token.created),
+ updated=dt_to_utc(access_token.updated)
+ ).where(at_table.c.token==access_token.token))
+
+ # Convert MediaEntry
+ media_table = inspect_table(metadata, "core__media_entries")
+ for media in db.execute(media_table.select()):
+ db.execute(media_table.update().values(
+ created=dt_to_utc(media.created)
+ ).where(media_table.c.id==media.id))
+
+ # Convert Media Attachment File
+ media_attachment_table = inspect_table(metadata, "core__attachment_files")
+ for ma in db.execute(media_attachment_table.select()):
+ db.execute(media_attachment_table.update().values(
+ created=dt_to_utc(ma.created)
+ ).where(media_attachment_table.c.id==ma.id))
+
+ # Convert MediaComment
+ comment_table = inspect_table(metadata, "core__media_comments")
+ for comment in db.execute(comment_table.select()):
+ db.execute(comment_table.update().values(
+ created=dt_to_utc(comment.created)
+ ).where(comment_table.c.id==comment.id))
+
+ # Convert Collection
+ collection_table = inspect_table(metadata, "core__collections")
+ for collection in db.execute(collection_table.select()):
+ db.execute(collection_table.update().values(
+ created=dt_to_utc(collection.created)
+ ).where(collection_table.c.id==collection.id))
+
+ # Convert Collection Item
+ collection_item_table = inspect_table(metadata, "core__collection_items")
+ for ci in db.execute(collection_item_table.select()):
+ db.execute(collection_item_table.update().values(
+ added=dt_to_utc(ci.added)
+ ).where(collection_item_table.c.id==ci.id))
+
+ # Convert Comment subscription
+ comment_sub = inspect_table(metadata, "core__comment_subscriptions")
+ for sub in db.execute(comment_sub.select()):
+ db.execute(comment_sub.update().values(
+ created=dt_to_utc(sub.created)
+ ).where(comment_sub.c.id==sub.id))
+
+ # Convert Notification
+ notification_table = inspect_table(metadata, "core__notifications")
+ for notification in db.execute(notification_table.select()):
+ db.execute(notification_table.update().values(
+ created=dt_to_utc(notification.created)
+ ).where(notification_table.c.id==notification.id))
+
+ # Convert ReportBase
+ reportbase_table = inspect_table(metadata, "core__reports")
+ for report in db.execute(reportbase_table.select()):
+ db.execute(reportbase_table.update().values(
+ created=dt_to_utc(report.created)
+ ).where(reportbase_table.c.id==report.id))
+
+ # Convert Generator
+ generator_table = inspect_table(metadata, "core__generators")
+ for generator in db.execute(generator_table.select()):
+ db.execute(generator_table.update().values(
+ published=dt_to_utc(generator.published),
+ updated=dt_to_utc(generator.updated)
+ ).where(generator_table.c.id==generator.id))
+
+ # Convert Activity
+ activity_table = inspect_table(metadata, "core__activities")
+ for activity in db.execute(activity_table.select()):
+ db.execute(activity_table.update().values(
+ published=dt_to_utc(activity.published),
+ updated=dt_to_utc(activity.updated)
+ ).where(activity_table.c.id==activity.id))
+
+ # Commit this to the database
+ db.commit()
+
+##
+# Migrations to handle migrating from activity specific foreign key to the
+# new GenericForeignKey implementations. They have been split up to improve
+# readability and minimise errors
+##
+
+class GenericModelReference_V0(declarative_base()):
+ __tablename__ = "core__generic_model_reference"
+
+ id = Column(Integer, primary_key=True)
+ obj_pk = Column(Integer, nullable=False)
+ model_type = Column(Unicode, nullable=False)
+
+@RegisterMigration(27, MIGRATIONS)
+def create_generic_model_reference(db):
+ """ Creates the Generic Model Reference table """
+ GenericModelReference_V0.__table__.create(db.bind)
+ db.commit()
+
+@RegisterMigration(28, MIGRATIONS)
+def add_foreign_key_fields(db):
+ """
+ Add the fields for GenericForeignKey to the model under temporary name,
+ this is so that later a data migration can occur. They will be renamed to
+ the origional names.
+ """
+ metadata = MetaData(bind=db.bind)
+ activity_table = inspect_table(metadata, "core__activities")
+
+ # Create column and add to model.
+ object_column = Column("temp_object", Integer, ForeignKey(GenericModelReference_V0.id))
+ object_column.create(activity_table)
+
+ target_column = Column("temp_target", Integer, ForeignKey(GenericModelReference_V0.id))
+ target_column.create(activity_table)
+
+ # Commit this to the database
+ db.commit()
+
+@RegisterMigration(29, MIGRATIONS)
+def migrate_data_foreign_keys(db):
+ """
+ This will migrate the data from the old object and target attributes which
+ use the old ActivityIntermediator to the new temparay fields which use the
+ new GenericForeignKey.
+ """
+
+ metadata = MetaData(bind=db.bind)
+ activity_table = inspect_table(metadata, "core__activities")
+ ai_table = inspect_table(metadata, "core__activity_intermediators")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Iterate through all activities doing the migration per activity.
+ for activity in model_iteration_hack(db, activity_table.select()):
+ # First do the "Activity.object" migration to "Activity.temp_object"
+ # I need to get the object from the Activity, I can't use the old
+ # Activity.get_object as we're in a migration.
+ object_ai = db.execute(ai_table.select(
+ ai_table.c.id==activity.object
+ )).first()
+
+ object_ai_type = ActivityIntermediator_R0.TABLENAMES[object_ai.type]
+ object_ai_table = inspect_table(metadata, object_ai_type)
+
+ activity_object = db.execute(object_ai_table.select(
+ object_ai_table.c.activity==object_ai.id
+ )).first()
+
+ # If the object the activity is referecing doesn't revolve, then we
+ # should skip it, it should be deleted when the AI table is deleted.
+ if activity_object is None:
+ continue
+
+ # now we need to create the GenericModelReference
+ object_gmr = db.execute(gmr_table.insert().values(
+ obj_pk=activity_object.id,
+ model_type=object_ai_type
+ ))
+
+ # Now set the ID of the GenericModelReference in the GenericForignKey
+ db.execute(activity_table.update().values(
+ temp_object=object_gmr.inserted_primary_key[0]
+ ))
+
+ # Now do same process for "Activity.target" to "Activity.temp_target"
+ # not all Activities have a target so if it doesn't just skip the rest
+ # of this.
+ if activity.target is None:
+ continue
+
+ # Now get the target for the activity.
+ target_ai = db.execute(ai_table.select(
+ ai_table.c.id==activity.target
+ )).first()
+
+ target_ai_type = ActivityIntermediator_R0.TABLENAMES[target_ai.type]
+ target_ai_table = inspect_table(metadata, target_ai_type)
+
+ activity_target = db.execute(target_ai_table.select(
+ target_ai_table.c.activity==target_ai.id
+ )).first()
+
+ # It's quite possible that the target, alike the object could also have
+ # been deleted, if so we should just skip it
+ if activity_target is None:
+ continue
+
+ # We now want to create the new target GenericModelReference
+ target_gmr = db.execute(gmr_table.insert().values(
+ obj_pk=activity_target.id,
+ model_type=target_ai_type
+ ))
+
+ # Now set the ID of the GenericModelReference in the GenericForignKey
+ db.execute(activity_table.update().values(
+ temp_object=target_gmr.inserted_primary_key[0]
+ ))
+
+ # Commit to the database. We're doing it here rather than outside the
+ # loop because if the server has a lot of data this can cause problems
+ db.commit()
+
+@RegisterMigration(30, MIGRATIONS)
+def rename_and_remove_object_and_target(db):
+ """
+ Renames the new Activity.object and Activity.target fields and removes the
+ old ones.
+ """
+ metadata = MetaData(bind=db.bind)
+ activity_table = inspect_table(metadata, "core__activities")
+
+ # Firstly lets remove the old fields.
+ old_object_column = activity_table.columns["object"]
+ old_target_column = activity_table.columns["target"]
+
+ # Drop the tables.
+ old_object_column.drop()
+ old_target_column.drop()
+
+ # Now get the new columns.
+ new_object_column = activity_table.columns["temp_object"]
+ new_target_column = activity_table.columns["temp_target"]
+
+ # rename them to the old names.
+ new_object_column.alter(name="object_id")
+ new_target_column.alter(name="target_id")
+
+ # Commit the changes to the database.
+ db.commit()
+
+@RegisterMigration(31, MIGRATIONS)
+def remove_activityintermediator(db):
+ """
+ This removes the old specific ActivityIntermediator model which has been
+ superseeded by the GenericForeignKey field.
+ """
+ metadata = MetaData(bind=db.bind)
+
+ # Remove the columns which reference the AI
+ collection_table = inspect_table(metadata, "core__collections")
+ collection_ai_column = collection_table.columns["activity"]
+ collection_ai_column.drop()
+
+ media_entry_table = inspect_table(metadata, "core__media_entries")
+ media_entry_ai_column = media_entry_table.columns["activity"]
+ media_entry_ai_column.drop()
+
+ comments_table = inspect_table(metadata, "core__media_comments")
+ comments_ai_column = comments_table.columns["activity"]
+ comments_ai_column.drop()
+
+ user_table = inspect_table(metadata, "core__users")
+ user_ai_column = user_table.columns["activity"]
+ user_ai_column.drop()
+
+ # Drop the table
+ ai_table = inspect_table(metadata, "core__activity_intermediators")
+ ai_table.drop()
+
+ # Commit the changes
+ db.commit()
+
+##
+# Migrations for converting the User model into a Local and Remote User
+# setup.
+##
+
+class LocalUser_V0(declarative_base()):
+ __tablename__ = "core__local_users"
+
+ id = Column(Integer, ForeignKey(User.id), primary_key=True)
+ username = Column(Unicode, nullable=False, unique=True)
+ email = Column(Unicode, nullable=False)
+ pw_hash = Column(Unicode)
+
+ wants_comment_notification = Column(Boolean, default=True)
+ wants_notifications = Column(Boolean, default=True)
+ license_preference = Column(Unicode)
+ uploaded = Column(Integer, default=0)
+ upload_limit = Column(Integer)
+
+class RemoteUser_V0(declarative_base()):
+ __tablename__ = "core__remote_users"
+
+ id = Column(Integer, ForeignKey(User.id), primary_key=True)
+ webfinger = Column(Unicode, unique=True)
+
+@RegisterMigration(32, MIGRATIONS)
+def federation_user_create_tables(db):
+ """
+ Create all the tables
+ """
+ # Create tables needed
+ LocalUser_V0.__table__.create(db.bind)
+ RemoteUser_V0.__table__.create(db.bind)
+ db.commit()
+
+ metadata = MetaData(bind=db.bind)
+ user_table = inspect_table(metadata, "core__users")
+
+ # Create the fields
+ updated_column = Column(
+ "updated",
+ DateTime,
+ default=datetime.datetime.utcnow
+ )
+ updated_column.create(user_table)
+
+ type_column = Column(
+ "type",
+ Unicode
+ )
+ type_column.create(user_table)
+
+ name_column = Column(
+ "name",
+ Unicode
+ )
+ name_column.create(user_table)
+
+ db.commit()
+
+@RegisterMigration(33, MIGRATIONS)
+def federation_user_migrate_data(db):
+ """
+ Migrate the data over to the new user models
+ """
+ metadata = MetaData(bind=db.bind)
+
+ user_table = inspect_table(metadata, "core__users")
+ local_user_table = inspect_table(metadata, "core__local_users")
+
+ for user in model_iteration_hack(db, user_table.select()):
+ db.execute(local_user_table.insert().values(
+ id=user.id,
+ username=user.username,
+ email=user.email,
+ pw_hash=user.pw_hash,
+ wants_comment_notification=user.wants_comment_notification,
+ wants_notifications=user.wants_notifications,
+ license_preference=user.license_preference,
+ uploaded=user.uploaded,
+ upload_limit=user.upload_limit
+ ))
+
+ db.execute(user_table.update().where(user_table.c.id==user.id).values(
+ updated=user.created,
+ type=LocalUser.__mapper_args__["polymorphic_identity"]
+ ))
+
+ db.commit()
+
+class User_vR2(declarative_base()):
+ __tablename__ = "rename__users"
+
+ id = Column(Integer, primary_key=True)
+ url = Column(Unicode)
+ bio = Column(UnicodeText)
+ name = Column(Unicode)
+ type = Column(Unicode)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ location = Column(Integer, ForeignKey(Location.id))
+
+@RegisterMigration(34, MIGRATIONS)
+def federation_remove_fields(db):
+ """
+ This removes the fields from User model which aren't shared
+ """
+ metadata = MetaData(bind=db.bind)
+
+ user_table = inspect_table(metadata, "core__users")
+
+ # Remove the columns moved to LocalUser from User
+ username_column = user_table.columns["username"]
+ username_column.drop()
+
+ email_column = user_table.columns["email"]
+ email_column.drop()
+
+ pw_hash_column = user_table.columns["pw_hash"]
+ pw_hash_column.drop()
+
+ license_preference_column = user_table.columns["license_preference"]
+ license_preference_column.drop()
+
+ uploaded_column = user_table.columns["uploaded"]
+ uploaded_column.drop()
+
+ upload_limit_column = user_table.columns["upload_limit"]
+ upload_limit_column.drop()
+
+ # SQLLite can't drop booleans -.-
+ if db.bind.url.drivername == 'sqlite':
+ # Create the new hacky table
+ User_vR2.__table__.create(db.bind)
+ db.commit()
+ new_user_table = inspect_table(metadata, "rename__users")
+ replace_table_hack(db, user_table, new_user_table)
+ else:
+ wcn_column = user_table.columns["wants_comment_notification"]
+ wcn_column.drop()
+
+ wants_notifications_column = user_table.columns["wants_notifications"]
+ wants_notifications_column.drop()
+
+ db.commit()
+
+@RegisterMigration(35, MIGRATIONS)
+def federation_media_entry(db):
+ metadata = MetaData(bind=db.bind)
+ media_entry_table = inspect_table(metadata, "core__media_entries")
+
+ # Add new fields
+ public_id_column = Column(
+ "public_id",
+ Unicode,
+ unique=True,
+ nullable=True
+ )
+ public_id_column.create(
+ media_entry_table,
+ unique_name="media_public_id"
+ )
+
+ remote_column = Column(
+ "remote",
+ Boolean,
+ default=False
+ )
+ remote_column.create(media_entry_table)
+
+ updated_column = Column(
+ "updated",
+ DateTime,
+ default=datetime.datetime.utcnow,
+ )
+ updated_column.create(media_entry_table)
+ db.commit()
+
+ # Data migration
+ for entry in model_iteration_hack(db, media_entry_table.select()):
+ db.execute(media_entry_table.update().values(
+ updated=entry.created,
+ remote=False
+ ))
+
+ db.commit()
+
+@RegisterMigration(36, MIGRATIONS)
+def create_oauth1_dummies(db):
+ """
+ Creates a dummy client, request and access tokens.
+
+ This is used when invalid data is submitted but real clients and
+ access tokens. The use of dummy objects prevents timing attacks.
+ """
+ metadata = MetaData(bind=db.bind)
+ client_table = inspect_table(metadata, "core__clients")
+ request_token_table = inspect_table(metadata, "core__request_tokens")
+ access_token_table = inspect_table(metadata, "core__access_tokens")
+
+ # Whilst we don't rely on the secret key being unique or unknown to prevent
+ # unauthorized clients from using it to authenticate, we still as an extra
+ # layer of protection created a cryptographically secure key individual to
+ # each instance that should never be able to be known.
+ client_secret = crypto.random_string(50)
+ request_token_secret = crypto.random_string(50)
+ request_token_verifier = crypto.random_string(50)
+ access_token_secret = crypto.random_string(50)
+
+ # Dummy created/updated datetime object
+ epoc_datetime = datetime.datetime.fromtimestamp(0)
+
+ # Create the dummy Client
+ db.execute(client_table.insert().values(
+ id=oauth.DUMMY_CLIENT_ID,
+ secret=client_secret,
+ application_type="dummy",
+ created=epoc_datetime,
+ updated=epoc_datetime
+ ))
+
+ # Create the dummy RequestToken
+ db.execute(request_token_table.insert().values(
+ token=oauth.DUMMY_REQUEST_TOKEN,
+ secret=request_token_secret,
+ client=oauth.DUMMY_CLIENT_ID,
+ verifier=request_token_verifier,
+ created=epoc_datetime,
+ updated=epoc_datetime,
+ callback="oob"
+ ))
+
+ # Create the dummy AccessToken
+ db.execute(access_token_table.insert().values(
+ token=oauth.DUMMY_ACCESS_TOKEN,
+ secret=access_token_secret,
+ request_token=oauth.DUMMY_REQUEST_TOKEN,
+ created=epoc_datetime,
+ updated=epoc_datetime
+ ))
+
+ # Commit the changes
+ db.commit()
+
+@RegisterMigration(37, MIGRATIONS)
+def federation_collection_schema(db):
+ """ Converts the Collection and CollectionItem """
+ metadata = MetaData(bind=db.bind)
+ collection_table = inspect_table(metadata, "core__collections")
+ collection_items_table = inspect_table(metadata, "core__collection_items")
+ media_entry_table = inspect_table(metadata, "core__media_entries")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ ##
+ # Collection Table
+ ##
+
+ # Add the fields onto the Collection model, we need to set these as
+ # not null to avoid DB integreity errors. We will add the not null
+ # constraint later.
+ public_id_column = Column(
+ "public_id",
+ Unicode,
+ unique=True
+ )
+ public_id_column.create(
+ collection_table,
+ unique_name="collection_public_id")
+
+ updated_column = Column(
+ "updated",
+ DateTime,
+ default=datetime.datetime.utcnow
+ )
+ updated_column.create(collection_table)
+
+ type_column = Column(
+ "type",
+ Unicode,
+ )
+ type_column.create(collection_table)
+
+ db.commit()
+
+ # Iterate over the items and set the updated and type fields
+ for collection in db.execute(collection_table.select()):
+ db.execute(collection_table.update().where(
+ collection_table.c.id==collection.id
+ ).values(
+ updated=collection.created,
+ type="core-user-defined"
+ ))
+
+ db.commit()
+
+ # Add the not null constraint onto the fields
+ updated_column = collection_table.columns["updated"]
+ updated_column.alter(nullable=False)
+
+ type_column = collection_table.columns["type"]
+ type_column.alter(nullable=False)
+
+ db.commit()
+
+ # Rename the "items" to "num_items" as per the TODO
+ num_items_field = collection_table.columns["items"]
+ num_items_field.alter(name="num_items")
+ db.commit()
+
+ ##
+ # CollectionItem
+ ##
+ # Adding the object ID column, this again will have not null added later.
+ object_id = Column(
+ "object_id",
+ Integer,
+ ForeignKey(GenericModelReference_V0.id),
+ )
+ object_id.create(
+ collection_items_table,
+ )
+
+ db.commit()
+
+ # Iterate through and convert the Media reference to object_id
+ for item in db.execute(collection_items_table.select()):
+ # Check if there is a GMR for the MediaEntry
+ object_gmr = db.execute(gmr_table.select(
+ and_(
+ gmr_table.c.obj_pk == item.media_entry,
+ gmr_table.c.model_type == "core__media_entries"
+ )
+ )).first()
+
+ if object_gmr:
+ object_gmr = object_gmr[0]
+ else:
+ # Create a GenericModelReference
+ object_gmr = db.execute(gmr_table.insert().values(
+ obj_pk=item.media_entry,
+ model_type="core__media_entries"
+ )).inserted_primary_key[0]
+
+ # Now set the object_id column to the ID of the GMR
+ db.execute(collection_items_table.update().where(
+ collection_items_table.c.id==item.id
+ ).values(
+ object_id=object_gmr
+ ))
+
+ db.commit()
+
+ # Add not null constraint
+ object_id = collection_items_table.columns["object_id"]
+ object_id.alter(nullable=False)
+
+ db.commit()
+
+ # Now remove the old media_entry column
+ media_entry_column = collection_items_table.columns["media_entry"]
+ media_entry_column.drop()
+
+ db.commit()
+
+@RegisterMigration(38, MIGRATIONS)
+def federation_actor(db):
+ """ Renames refereces to the user to actor """
+ metadata = MetaData(bind=db.bind)
+
+ # RequestToken: user -> actor
+ request_token_table = inspect_table(metadata, "core__request_tokens")
+ rt_user_column = request_token_table.columns["user"]
+ rt_user_column.alter(name="actor")
+
+ # AccessToken: user -> actor
+ access_token_table = inspect_table(metadata, "core__access_tokens")
+ at_user_column = access_token_table.columns["user"]
+ at_user_column.alter(name="actor")
+
+ # MediaEntry: uploader -> actor
+ media_entry_table = inspect_table(metadata, "core__media_entries")
+ me_user_column = media_entry_table.columns["uploader"]
+ me_user_column.alter(name="actor")
+
+ # MediaComment: author -> actor
+ media_comment_table = inspect_table(metadata, "core__media_comments")
+ mc_user_column = media_comment_table.columns["author"]
+ mc_user_column.alter(name="actor")
+
+ # Collection: creator -> actor
+ collection_table = inspect_table(metadata, "core__collections")
+ mc_user_column = collection_table.columns["creator"]
+ mc_user_column.alter(name="actor")
+
+ # commit changes to db.
+ db.commit()
+
+class Graveyard_V0(declarative_base()):
+ """ Where models come to die """
+ __tablename__ = "core__graveyard"
+
+ id = Column(Integer, primary_key=True)
+ public_id = Column(Unicode, nullable=True, unique=True)
+
+ deleted = Column(DateTime, nullable=False)
+ object_type = Column(Unicode, nullable=False)
+
+ actor_id = Column(Integer, ForeignKey(GenericModelReference_V0.id))
+
+@RegisterMigration(39, MIGRATIONS)
+def federation_graveyard(db):
+ """ Introduces soft deletion to models
+
+ This adds a Graveyard model which is used to copy (soft-)deleted models to.
+ """
+ metadata = MetaData(bind=db.bind)
+
+ # Create the graveyard table
+ Graveyard_V0.__table__.create(db.bind)
+
+ # Commit changes to the db
+ db.commit()
+
+@RegisterMigration(40, MIGRATIONS)
+def add_public_id(db):
+ metadata = MetaData(bind=db.bind)
+
+ # Get the table
+ activity_table = inspect_table(metadata, "core__activities")
+ activity_public_id = Column(
+ "public_id",
+ Unicode,
+ unique=True,
+ nullable=True
+ )
+ activity_public_id.create(
+ activity_table,
+ unique_name="activity_public_id"
+ )
+
+ # Commit this.
+ db.commit()
+
+class Comment_V0(declarative_base()):
+ __tablename__ = "core__comment_links"
+
+ id = Column(Integer, primary_key=True)
+ target_id = Column(
+ Integer,
+ ForeignKey(GenericModelReference_V0.id),
+ nullable=False
+ )
+ comment_id = Column(
+ Integer,
+ ForeignKey(GenericModelReference_V0.id),
+ nullable=False
+ )
+ added = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+
+@RegisterMigration(41, MIGRATIONS)
+def federation_comments(db):
+ """
+ This reworks the MediaComent to be a more generic Comment model.
+ """
+ metadata = MetaData(bind=db.bind)
+ textcomment_table = inspect_table(metadata, "core__media_comments")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # First of all add the public_id field to the TextComment table
+ comment_public_id_column = Column(
+ "public_id",
+ Unicode,
+ unique=True
+ )
+ comment_public_id_column.create(
+ textcomment_table,
+ unique_name="public_id_unique"
+ )
+
+ comment_updated_column = Column(
+ "updated",
+ DateTime,
+ )
+ comment_updated_column.create(textcomment_table)
+
+
+ # First create the Comment link table.
+ Comment_V0.__table__.create(db.bind)
+ db.commit()
+
+ # now look up the comment table
+ comment_table = inspect_table(metadata, "core__comment_links")
+
+ # Itierate over all the comments and add them to the link table.
+ for comment in db.execute(textcomment_table.select()):
+ # Check if there is a GMR to the comment.
+ comment_gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment.id,
+ gmr_table.c.model_type == "core__media_comments"
+ ))).first()
+
+ if comment_gmr:
+ comment_gmr = comment_gmr[0]
+ else:
+ comment_gmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment.id,
+ model_type="core__media_comments"
+ )).inserted_primary_key[0]
+
+ # Get or create the GMR for the media entry
+ entry_gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment.media_entry,
+ gmr_table.c.model_type == "core__media_entries"
+ ))).first()
+
+ if entry_gmr:
+ entry_gmr = entry_gmr[0]
+ else:
+ entry_gmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment.media_entry,
+ model_type="core__media_entries"
+ )).inserted_primary_key[0]
+
+ # Add the comment link.
+ db.execute(comment_table.insert().values(
+ target_id=entry_gmr,
+ comment_id=comment_gmr,
+ added=datetime.datetime.utcnow()
+ ))
+
+ # Add the data to the updated field
+ db.execute(textcomment_table.update().where(
+ textcomment_table.c.id == comment.id
+ ).values(
+ updated=comment.created
+ ))
+ db.commit()
+
+ # Add not null constraint
+ textcomment_update_column = textcomment_table.columns["updated"]
+ textcomment_update_column.alter(nullable=False)
+
+ # Remove the unused fields on the TextComment model
+ comment_media_entry_column = textcomment_table.columns["media_entry"]
+ comment_media_entry_column.drop()
+ db.commit()
+
+@RegisterMigration(42, MIGRATIONS)
+def consolidate_reports(db):
+ """ Consolidates the report tables into just one """
+ metadata = MetaData(bind=db.bind)
+
+ report_table = inspect_table(metadata, "core__reports")
+ comment_report_table = inspect_table(metadata, "core__reports_on_comments")
+ media_report_table = inspect_table(metadata, "core__reports_on_media")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Add the GMR object field onto the base report table
+ report_object_id_column = Column(
+ "object_id",
+ Integer,
+ ForeignKey(GenericModelReference_V0.id),
+ nullable=True,
+ )
+ report_object_id_column.create(report_table)
+ db.commit()
+
+ # Iterate through the reports in the comment table and merge them in.
+ for comment_report in db.execute(comment_report_table.select()):
+ # If the comment is None it's been deleted, we should skip
+ if comment_report.comment_id is None:
+ continue
+
+ # Find a GMR for this if one exists.
+ crgmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment_report.comment_id,
+ gmr_table.c.model_type == "core__media_comments"
+ ))).first()
+
+ if crgmr:
+ crgmr = crgmr[0]
+ else:
+ crgmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment_report.comment_id,
+ model_type="core__media_comments"
+ )).inserted_primary_key[0]
+
+ # Great now we can save this back onto the (base) report.
+ db.execute(report_table.update().where(
+ report_table.c.id == comment_report.id
+ ).values(
+ object_id=crgmr
+ ))
+
+ # Iterate through the Media Reports and do the save as above.
+ for media_report in db.execute(media_report_table.select()):
+ # If the media report is None then it's been deleted nd we should skip
+ if media_report.media_entry_id is None:
+ continue
+
+ # Find Mr. GMR :)
+ mrgmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == media_report.media_entry_id,
+ gmr_table.c.model_type == "core__media_entries"
+ ))).first()
+
+ if mrgmr:
+ mrgmr = mrgmr[0]
+ else:
+ mrgmr = db.execute(gmr_table.insert().values(
+ obj_pk=media_report.media_entry_id,
+ model_type="core__media_entries"
+ )).inserted_primary_key[0]
+
+ # Save back on to the base.
+ db.execute(report_table.update().where(
+ report_table.c.id == media_report.id
+ ).values(
+ object_id=mrgmr
+ ))
+
+ db.commit()
+
+ # Now we can remove the fields we don't need anymore
+ report_type = report_table.columns["type"]
+ report_type.drop()
+
+ # Drop both MediaReports and CommentTable.
+ comment_report_table.drop()
+ media_report_table.drop()
+
+ # Commit we're done.
+ db.commit()
+
+@RegisterMigration(43, MIGRATIONS)
+def consolidate_notification(db):
+ """ Consolidates the notification models into one """
+ metadata = MetaData(bind=db.bind)
+ notification_table = inspect_table(metadata, "core__notifications")
+ cn_table = inspect_table(metadata, "core__comment_notifications")
+ cp_table = inspect_table(metadata, "core__processing_notifications")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Add fields needed
+ notification_object_id_column = Column(
+ "object_id",
+ Integer,
+ ForeignKey(GenericModelReference_V0.id)
+ )
+ notification_object_id_column.create(notification_table)
+ db.commit()
+
+ # Iterate over comments and move to notification base table.
+ for comment_notification in db.execute(cn_table.select()):
+ # Find the GMR.
+ cngmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment_notification.subject_id,
+ gmr_table.c.model_type == "core__media_comments"
+ ))).first()
+
+ if cngmr:
+ cngmr = cngmr[0]
+ else:
+ cngmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment_notification.subject_id,
+ model_type="core__media_comments"
+ )).inserted_primary_key[0]
+
+ # Save back on notification
+ db.execute(notification_table.update().where(
+ notification_table.c.id == comment_notification.id
+ ).values(
+ object_id=cngmr
+ ))
+ db.commit()
+
+ # Do the same for processing notifications
+ for processing_notification in db.execute(cp_table.select()):
+ cpgmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == processing_notification.subject_id,
+ gmr_table.c.model_type == "core__processing_notifications"
+ ))).first()
+
+ if cpgmr:
+ cpgmr = cpgmr[0]
+ else:
+ cpgmr = db.execute(gmr_table.insert().values(
+ obj_pk=processing_notification.subject_id,
+ model_type="core__processing_notifications"
+ )).inserted_primary_key[0]
+
+ db.execute(notification_table.update().where(
+ notification_table.c.id == processing_notification.id
+ ).values(
+ object_id=cpgmr
+ ))
+ db.commit()
+
+ # Add the not null constraint
+ notification_object_id = notification_table.columns["object_id"]
+ notification_object_id.alter(nullable=False)
+
+ # Now drop the fields we don't need
+ notification_type_column = notification_table.columns["type"]
+ notification_type_column.drop()
+
+ # Drop the tables we no longer need
+ cp_table.drop()
+ cn_table.drop()
+
+ db.commit()
+
+@RegisterMigration(44, MIGRATIONS)
+def activity_cleanup(db):
+ """
+ This cleans up activities which are broken and have no graveyard object as
+ well as removing the not null constraint on Report.object_id as that can
+ be null when action has been taken to delete the reported content.
+
+ Some of this has been changed in previous migrations so we need to check
+ if there is anything to be done, there might not be. It was fixed as part
+ of the #5369 fix. Some past migrations could have broken on some people so
+ needed to be fixed then however for some they would have run fine.
+ """
+ metadata = MetaData(bind=db.bind)
+ report_table = inspect_table(metadata, "core__reports")
+ activity_table = inspect_table(metadata, "core__activities")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Remove not null on Report.object_id
+ object_id_column = report_table.columns["object_id"]
+ if not object_id_column.nullable:
+ object_id_column.alter(nullable=False)
+ db.commit()
+
+ # Go through each activity and verify the object and if a target is
+ # specified both exist.
+ for activity in db.execute(activity_table.select()):
+ # Get the GMR
+ obj_gmr = db.execute(gmr_table.select().where(
+ gmr_table.c.id == activity.object_id,
+ )).first()
+
+ # Get the object the GMR points to, might be null.
+ obj_table = inspect_table(metadata, obj_gmr.model_type)
+ obj = db.execute(obj_table.select().where(
+ obj_table.c.id == obj_gmr.obj_pk
+ )).first()
+
+ if obj is None:
+ # Okay we need to delete the activity and move to the next
+ db.execute(activity_table.delete().where(
+ activity_table.c.id == activity.id
+ ))
+ continue
+
+ # If there is a target then check that too, if not that's fine
+ if activity.target_id == None:
+ continue
+
+ # Okay check the target is valid
+ target_gmr = db.execute(gmr_table.select().where(
+ gmr_table.c.id == activity.target_id
+ )).first()
+
+ target_table = inspect_table(metadata, target_gmr.model_type)
+ target = db.execute(target_table.select().where(
+ target_table.c.id == target_gmr.obj_pk
+ )).first()
+
+ # If it doesn't exist, delete the activity.
+ if target is None:
+ db.execute(activity_table.delete().where(
+ activity_table.c.id == activity.id
+ ))
diff --git a/mediagoblin/db/migrations/README b/mediagoblin/db/migrations/README
new file mode 100644
index 00000000..93d85eff
--- /dev/null
+++ b/mediagoblin/db/migrations/README
@@ -0,0 +1,57 @@
+Migration Guide
+---------------
+
+Alembic comes with a CLI called ``alembic``.
+
+Create a Migration
+^^^^^^^^^^^^^^^^^^
+
+Lets create our first migration::
+
+ $ alembic revision -m "add favourite_band field"
+ Generating
+ /your/gmg/path/mediagoblin/db/migrations/versions/1e3793de36a_add_favourite_band_field.py ... done
+
+By default, migration files have two methods: ``upgrade`` and ``downgrade``.
+Alembic will invoke these methods to apply the migrations to your current
+database.
+
+Now, we need to edit our newly created migration file
+``1e3793de36a_add_favourite_band_field.py`` to add a new column ``favourite_band``
+to ``core__users`` table::
+
+ def upgrade():
+ op.add_column('core__users', sa.Column('favourite_band', sa.Unicode(100)))
+
+
+ def downgrade():
+ op.drop_column('core__users', 'favourite_band')
+
+.. note::
+
+ Alembic can also generate `automatic migrations <http://alembic.readthedocs.org/en/latest/tutorial.html#auto-generating-migrations>`__.
+
+Then we can run ``gmg dbupdate`` to apply the new migration::
+
+ $ gmg dbupdate
+ INFO [alembic.migration] Context impl SQLiteImpl.
+ INFO [alembic.migration] Will assume non-transactional DDL.
+ INFO [alembic.migration] Running upgrade None -> 1e3793de36a, add favourite band field
+
+If you want to revert that migration, simply run::
+
+ $ alembic downgrade -1
+
+.. warning::
+
+ Currently, Alembic cannot do ``DROP COLUMN``, ``ALTER COLUMN`` etc.
+ operations in SQLite. Please see https://bitbucket.org/zzzeek/alembic/issue/21/column-renames-not-supported-on-sqlite
+ for detailed information.
+
+Glossary
+^^^^^^^^
+
+* ``alembic.ini``: The Alembic configuration file. The ``alembic`` CLI will
+ look that file everytime it invaked.
+* ``mediagoblin/db/migrations/versions/``: Alembic will add new migration files
+ to this directory.
diff --git a/mediagoblin/db/migrations/env.py b/mediagoblin/db/migrations/env.py
new file mode 100644
index 00000000..43b7b247
--- /dev/null
+++ b/mediagoblin/db/migrations/env.py
@@ -0,0 +1,64 @@
+from __future__ import with_statement
+from alembic import context
+from sqlalchemy import engine_from_config, pool
+from logging.config import fileConfig
+
+# this is the Alembic Config object, which provides
+# access to the values within the .ini file in use.
+config = context.config
+
+# Interpret the config file for Python logging.
+# This line sets up loggers basically.
+fileConfig(config.config_file_name)
+
+# add your model's MetaData object here
+# for 'autogenerate' support
+# from myapp import mymodel
+# target_metadata = mymodel.Base.metadata
+from mediagoblin.db.models import Base
+target_metadata = Base.metadata
+
+# other values from the config, defined by the needs of env.py,
+# can be acquired:
+# my_important_option = config.get_main_option("my_important_option")
+# ... etc.
+
+def run_migrations_offline():
+ """Run migrations in 'offline' mode.
+
+ This configures the context with just a URL
+ and not an Engine, though an Engine is acceptable
+ here as well. By skipping the Engine creation
+ we don't even need a DBAPI to be available.
+
+ Calls to context.execute() here emit the given string to the
+ script output.
+
+ """
+ url = config.get_main_option("sqlalchemy.url")
+ context.configure(url=url, target_metadata=target_metadata)
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+def run_migrations_online():
+ """Run migrations in 'online' mode.
+
+ In this scenario we need to create an Engine
+ and associate a connection with the context.
+
+ """
+ connection = config.attributes["session"].get_bind()
+ context.configure(
+ connection=connection,
+ target_metadata=target_metadata
+ )
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+if context.is_offline_mode():
+ run_migrations_offline()
+else:
+ run_migrations_online()
+
diff --git a/mediagoblin/db/migrations/script.py.mako b/mediagoblin/db/migrations/script.py.mako
new file mode 100644
index 00000000..43c09401
--- /dev/null
+++ b/mediagoblin/db/migrations/script.py.mako
@@ -0,0 +1,24 @@
+"""${message}
+
+Revision ID: ${up_revision}
+Revises: ${down_revision | comma,n}
+Create Date: ${create_date}
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = ${repr(up_revision)}
+down_revision = ${repr(down_revision)}
+branch_labels = ${repr(branch_labels)}
+depends_on = ${repr(depends_on)}
+
+from alembic import op
+import sqlalchemy as sa
+${imports if imports else ""}
+
+def upgrade():
+ ${upgrades if upgrades else "pass"}
+
+
+def downgrade():
+ ${downgrades if downgrades else "pass"}
diff --git a/mediagoblin/db/migrations/versions/.gitkeep b/mediagoblin/db/migrations/versions/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/.gitkeep
diff --git a/mediagoblin/db/migrations/versions/101510e3a713_removes_graveyard_items_from_.py b/mediagoblin/db/migrations/versions/101510e3a713_removes_graveyard_items_from_.py
new file mode 100644
index 00000000..723100c5
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/101510e3a713_removes_graveyard_items_from_.py
@@ -0,0 +1,60 @@
+"""#5382 Removes graveyard items from collections
+
+Revision ID: 101510e3a713
+Revises: 52bf0ccbedc1
+Create Date: 2016-01-12 10:46:26.486610
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '101510e3a713'
+down_revision = '52bf0ccbedc1'
+
+from alembic import op
+from sqlalchemy import MetaData
+from sqlalchemy.sql import and_
+from mediagoblin.db.migration_tools import inspect_table
+
+def upgrade():
+ """
+ The problem is deletions are occuring and as we expect the
+ GenericModelReference objects are being updated to point to the tombstone
+ object. The issue is that collections now contain deleted items, this
+ causes problems when it comes to rendering them for example.
+
+ This migration is to remove any Graveyard objects (tombstones) from any
+ Collection.
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+ collection_items_table = inspect_table(metadata, "core__collection_items")
+ graveyard_table = inspect_table(metadata, "core__graveyard")
+
+ res = list(db.execute(graveyard_table.select()))
+ for tombstone in res:
+ # Get GMR for tombstone
+ gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == tombstone.id,
+ gmr_table.c.model_type == "core__graveyard"
+ ))).first()
+
+ # If there is no GMR, we're all good as it's required to be in a
+ # collection
+ if gmr is None:
+ continue
+
+ # Delete all the CollectionItem objects for this GMR
+ db.execute(collection_items_table.delete().where(
+ collection_items_table.c.object_id == gmr.id
+ ))
+
+
+def downgrade():
+ """
+ Nothing to do here, the migration just deletes objects from collections.
+ There are no schema changes that have occured. This can be reverted without
+ any problems.
+ """
+ pass
diff --git a/mediagoblin/db/migrations/versions/228916769bd2_ensure_report_object_id_is_nullable.py b/mediagoblin/db/migrations/versions/228916769bd2_ensure_report_object_id_is_nullable.py
new file mode 100644
index 00000000..596b87de
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/228916769bd2_ensure_report_object_id_is_nullable.py
@@ -0,0 +1,33 @@
+"""ensure Report.object_id is nullable
+
+Revision ID: 228916769bd2
+Revises: 3145accb8fe3
+Create Date: 2016-02-29 18:54:37.295185
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '228916769bd2'
+down_revision = '3145accb8fe3'
+
+from alembic import op
+from sqlalchemy import MetaData
+from mediagoblin.db.migration_tools import inspect_table
+
+def upgrade():
+ """
+ This ensures that the Report.object_id field is nullable, it seems for a
+ short period of time it could have been NOT NULL but was fixed later.
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+ report_table = inspect_table(metadata, "core__reports")
+
+ # Check if the field has nullable on
+ object_id_field = report_table.columns["object_id"]
+ if object_id_field.nullable != True:
+ # We have to alter this.
+ object_id_field.alter(nullable=True)
+
+def downgrade():
+ pass
diff --git a/mediagoblin/db/migrations/versions/3145accb8fe3_remove_tombstone_comment_wrappers.py b/mediagoblin/db/migrations/versions/3145accb8fe3_remove_tombstone_comment_wrappers.py
new file mode 100644
index 00000000..1f336048
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/3145accb8fe3_remove_tombstone_comment_wrappers.py
@@ -0,0 +1,44 @@
+"""remove tombstone comment wrappers
+
+Revision ID: 3145accb8fe3
+Revises: 4066b9f8b84a
+Create Date: 2016-02-29 14:38:12.096859
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '3145accb8fe3'
+down_revision = '4066b9f8b84a'
+
+from alembic import op
+from sqlalchemy import MetaData, and_
+from mediagoblin.db.migration_tools import inspect_table
+
+def upgrade():
+ """
+ Removes comments which have been deleted and exist as a tombstone but still
+ have their Comment wrapper.
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+ comment_table = inspect_table(metadata, "core__comment_links")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Get the Comment wrappers
+ comment_wrappers = list(db.execute(comment_table.select()))
+
+ for wrapper in comment_wrappers:
+ # Query for the graveyard GMR comment
+ gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.id == wrapper.comment_id,
+ gmr_table.c.model_type == "core__graveyard"
+ ))).first()
+
+ if gmr is not None:
+ # Okay delete this wrapper as it's to a deleted comment
+ db.execute(comment_table.delete().where(
+ comment_table.c.id == wrapper.id
+ ))
+
+def downgrade():
+ pass
diff --git a/mediagoblin/db/migrations/versions/4066b9f8b84a_use_comment_link_ids_notifications.py b/mediagoblin/db/migrations/versions/4066b9f8b84a_use_comment_link_ids_notifications.py
new file mode 100644
index 00000000..9dfef18d
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/4066b9f8b84a_use_comment_link_ids_notifications.py
@@ -0,0 +1,103 @@
+"""use_comment_link_ids_notifications
+
+Revision ID: 4066b9f8b84a
+Revises: 8429e33fdf7
+Create Date: 2016-02-29 11:46:13.511318
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '4066b9f8b84a'
+down_revision = '8429e33fdf7'
+
+from alembic import op
+from sqlalchemy import MetaData
+from sqlalchemy import and_
+from mediagoblin.db.migration_tools import inspect_table
+
+def upgrade():
+ """"
+ This replaces the Notification.obj with the ID of the Comment (i.e. comment
+ link) ID instead of the TextComment object.
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+ notification_table = inspect_table(metadata, "core__notifications")
+ comment_table = inspect_table(metadata, "core__comment_links")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ # Get the notifications.
+ notifications = list(db.execute(notification_table.select()))
+
+ # Iterate through all the notifications
+ for notification in notifications:
+ # Lookup the Comment link object from the notification's ID
+ comment_link = db.execute(comment_table.select().where(
+ comment_table.c.comment_id == notification.object_id
+ )).first()
+
+ # Find the GMR for this comment or make one if one doesn't exist.
+ gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment_link.id,
+ gmr_table.c.model_type == "core__comment_links"
+ ))).first()
+
+ # If it doesn't exist we need to create one.
+ if gmr is None:
+ gmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment_link.id,
+ model_type="core__comment_links"
+ )).inserted_primary_key[0]
+ else:
+ gmr = gmr.id
+
+ # Okay now we need to update the notification with the ID of the link
+ # rather than the ID of TextComment object.
+ db.execute(notification_table.update().values(
+ object_id=gmr
+ ).where(
+ notification_table.c.id == notification.id
+ ))
+
+
+def downgrade():
+ """
+ This puts back the TextComment ID for the notification.object_id field
+ where we're using the Comment object (i.e. the comment link ID)
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+ notification_table = inspect_table(metadata, "core__notifications")
+ comment_table = inspect_table(metadata, "core__comment_links")
+
+ # Notificaitons
+ notifications = list(db.execute(notification_table.select()))
+
+ # Iterate through all the notifications
+ for notification in notifications:
+ # Lookup the Comment link object from the notification's ID
+ comment_link = db.execute(comment_table.select().where(
+ comment_table.c.id == notification.object_id
+ )).first()
+
+ # Find the GMR for the TextComment
+ gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == comment_link.id,
+ gmr_table.c.model_type == "core__comment_links"
+ ))).first()
+
+ if gmr is None:
+ gmr = db.execute(gmr_table.insert().values(
+ obj_pk=comment_link.id,
+ model_type="core__comment_links"
+ )).inserted_primary_key[0]
+ else:
+ gmr = gmr.id
+
+ # Update the notification with the TextComment (i.e. the comment object)
+ db.execute(notification_table.update().values(
+ object_id=gmr
+ ).where(
+ notification_table.c.id == notification.id
+ ))
+
diff --git a/mediagoblin/db/migrations/versions/52bf0ccbedc1_initial_revision.py b/mediagoblin/db/migrations/versions/52bf0ccbedc1_initial_revision.py
new file mode 100644
index 00000000..964cf5be
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/52bf0ccbedc1_initial_revision.py
@@ -0,0 +1,422 @@
+"""initial revision
+
+Revision ID: 52bf0ccbedc1
+Revises: None
+Create Date: 2015-11-07 17:00:28.191042
+Description: This is an initial Alembic migration
+"""
+
+# revision identifiers, used by Alembic.
+revision = '52bf0ccbedc1'
+down_revision = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ # Well we already appear to have some of the core data, presumably because
+ # this database precedes our alembic migrations with sqlalchemy-migrate, so
+ # we can bail out early.
+ if op.get_bind().engine.has_table("core__users"):
+ return
+
+ op.create_table(
+ 'core__clients',
+ sa.Column('id', sa.Unicode(), nullable=True),
+ sa.Column('secret', sa.Unicode(), nullable=False),
+ sa.Column('expirey', sa.DateTime(), nullable=True),
+ sa.Column('application_type', sa.Unicode(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('redirect_uri', sa.UnicodeText(),
+ nullable=True),
+ sa.Column('logo_url', sa.Unicode(), nullable=True),
+ sa.Column('application_name', sa.Unicode(), nullable=True),
+ sa.Column('contacts', sa.UnicodeText(),
+ nullable=True),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__file_keynames',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Unicode(), nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('name'))
+
+ op.create_table(
+ 'core__generators',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Unicode(), nullable=False),
+ sa.Column('published', sa.DateTime(), nullable=True),
+ sa.Column('updated', sa.DateTime(), nullable=True),
+ sa.Column('object_type', sa.Unicode(), nullable=False),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__generic_model_reference',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('obj_pk', sa.Integer(), nullable=False),
+ sa.Column('model_type', sa.Unicode(), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('model_type', 'obj_pk'))
+
+ op.create_table(
+ 'core__locations',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Unicode(), nullable=True),
+ sa.Column('position', sa.UnicodeText(),
+ nullable=True),
+ sa.Column('address', sa.UnicodeText(),
+ nullable=True),
+ sa.PrimaryKeyConstraint('id'))
+
+ # We should remove this in a future migration, though
+ op.create_table(
+ 'core__migrations',
+ sa.Column('name', sa.Unicode(), nullable=False),
+ sa.Column('version', sa.Integer(), nullable=False),
+ sa.PrimaryKeyConstraint('name'))
+
+ op.create_table(
+ 'core__nonce_timestamps',
+ sa.Column('nonce', sa.Unicode(), nullable=False),
+ sa.Column('timestamp', sa.DateTime(), nullable=False),
+ sa.PrimaryKeyConstraint('nonce', 'timestamp'))
+
+ op.create_table(
+ 'core__privileges',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('privilege_name', sa.Unicode(), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('privilege_name'))
+
+ op.create_table(
+ 'core__tags',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('slug', sa.Unicode(), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('slug'))
+
+ op.create_table(
+ 'core__comment_links',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('target_id', sa.Integer(), nullable=False),
+ sa.Column('comment_id', sa.Integer(), nullable=False),
+ sa.Column('added', sa.DateTime(), nullable=False),
+ sa.ForeignKeyConstraint(['comment_id'],
+ ['core__generic_model_reference.id']),
+ sa.ForeignKeyConstraint(['target_id'],
+ ['core__generic_model_reference.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__graveyard',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('public_id', sa.Unicode(), nullable=True),
+ sa.Column('deleted', sa.DateTime(), nullable=False),
+ sa.Column('object_type', sa.Unicode(), nullable=False),
+ sa.Column('actor_id', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['actor_id'],
+ ['core__generic_model_reference.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('public_id'))
+
+ op.create_table(
+ 'core__users',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('url', sa.Unicode(), nullable=True),
+ sa.Column('bio', sa.UnicodeText(), nullable=True),
+ sa.Column('name', sa.Unicode(), nullable=True),
+ sa.Column('type', sa.Unicode(), nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('location', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['location'], ['core__locations.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__activities',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('public_id', sa.Unicode(), nullable=True),
+ sa.Column('actor', sa.Integer(), nullable=False),
+ sa.Column('published', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('verb', sa.Unicode(), nullable=False),
+ sa.Column('content', sa.Unicode(), nullable=True),
+ sa.Column('title', sa.Unicode(), nullable=True),
+ sa.Column('generator', sa.Integer(), nullable=True),
+ sa.Column('object_id', sa.Integer(), nullable=False),
+ sa.Column('target_id', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['generator'], ['core__generators.id']),
+ sa.ForeignKeyConstraint(['object_id'],
+ ['core__generic_model_reference.id']),
+ sa.ForeignKeyConstraint(['target_id'],
+ ['core__generic_model_reference.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('public_id'))
+
+ op.create_table(
+ 'core__collections',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('public_id', sa.Unicode(), nullable=True),
+ sa.Column('title', sa.Unicode(), nullable=False),
+ sa.Column('slug', sa.Unicode(), nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('description', sa.UnicodeText(), nullable=True),
+ sa.Column('actor', sa.Integer(), nullable=False),
+ sa.Column('num_items', sa.Integer(), nullable=True),
+ sa.Column('type', sa.Unicode(), nullable=False),
+ sa.Column('location', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['location'], ['core__locations.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('actor', 'slug'),
+ sa.UniqueConstraint('public_id'))
+
+ op.create_index(
+ op.f('ix_core__collections_created'),
+ 'core__collections', ['created'], unique=False)
+
+ op.create_table(
+ 'core__local_users',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('username', sa.Unicode(), nullable=False),
+ sa.Column('email', sa.Unicode(), nullable=False),
+ sa.Column('pw_hash', sa.Unicode(), nullable=True),
+ sa.Column('wants_comment_notification', sa.Boolean(), nullable=True),
+ sa.Column('wants_notifications', sa.Boolean(), nullable=True),
+ sa.Column('license_preference', sa.Unicode(), nullable=True),
+ sa.Column('uploaded', sa.Integer(), nullable=True),
+ sa.Column('upload_limit', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('username'))
+
+ op.create_table(
+ 'core__media_comments',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('public_id', sa.Unicode(), nullable=True),
+ sa.Column('actor', sa.Integer(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('content', sa.UnicodeText(), nullable=False),
+ sa.Column('location', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['location'], ['core__locations.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('public_id'))
+
+ op.create_table(
+ 'core__media_entries',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('public_id', sa.Unicode(), nullable=True),
+ sa.Column('remote', sa.Boolean(), nullable=True),
+ sa.Column('actor', sa.Integer(), nullable=False),
+ sa.Column('title', sa.Unicode(), nullable=False),
+ sa.Column('slug', sa.Unicode(), nullable=True),
+ sa.Column('description', sa.UnicodeText(), nullable=True),
+ sa.Column('media_type', sa.Unicode(), nullable=False),
+ sa.Column('state', sa.Unicode(), nullable=False),
+ sa.Column('license', sa.Unicode(), nullable=True),
+ sa.Column('file_size', sa.Integer(), nullable=True),
+ sa.Column('location', sa.Integer(), nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.Column('fail_error', sa.Unicode(), nullable=True),
+ sa.Column('fail_metadata', sa.UnicodeText(), nullable=True),
+ sa.Column('transcoding_progress', sa.SmallInteger(), nullable=True),
+ sa.Column('queued_media_file', sa.Unicode(), nullable=True),
+ sa.Column('queued_task_id', sa.Unicode(), nullable=True),
+ sa.Column('media_metadata', sa.UnicodeText(), nullable=True),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['location'], ['core__locations.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('actor', 'slug'),
+ sa.UniqueConstraint('public_id'))
+
+ op.create_index(
+ op.f('ix_core__media_entries_actor'),
+ 'core__media_entries', ['actor'], unique=False)
+ op.create_index(
+ op.f('ix_core__media_entries_created'),
+ 'core__media_entries', ['created'], unique=False)
+
+ op.create_table(
+ 'core__notifications',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('object_id', sa.Integer(), nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.Column('seen', sa.Boolean(), nullable=True),
+ sa.ForeignKeyConstraint(['object_id'],
+ ['core__generic_model_reference.id']),
+ sa.ForeignKeyConstraint(['user_id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_index(
+ op.f('ix_core__notifications_seen'),
+ 'core__notifications', ['seen'], unique=False)
+
+ op.create_index(
+ op.f('ix_core__notifications_user_id'),
+ 'core__notifications', ['user_id'], unique=False)
+
+ op.create_table(
+ 'core__privileges_users',
+ sa.Column('user', sa.Integer(), nullable=False),
+ sa.Column('privilege', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['privilege'], ['core__privileges.id']),
+ sa.ForeignKeyConstraint(['user'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('user', 'privilege'))
+
+ op.create_table(
+ 'core__remote_users',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('webfinger', sa.Unicode(), nullable=True),
+ sa.ForeignKeyConstraint(['id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('webfinger'))
+
+ op.create_table(
+ 'core__reports',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('reporter_id', sa.Integer(), nullable=False),
+ sa.Column('report_content', sa.UnicodeText(), nullable=True),
+ sa.Column('reported_user_id', sa.Integer(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('resolver_id', sa.Integer(), nullable=True),
+ sa.Column('resolved', sa.DateTime(), nullable=True),
+ sa.Column('result', sa.UnicodeText(), nullable=True),
+ sa.Column('object_id', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['object_id'],
+ ['core__generic_model_reference.id']),
+ sa.ForeignKeyConstraint(['reported_user_id'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['reporter_id'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['resolver_id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'))
+ op.create_table(
+ 'core__request_tokens',
+ sa.Column('token', sa.Unicode(), nullable=False),
+ sa.Column('secret', sa.Unicode(), nullable=False),
+ sa.Column('client', sa.Unicode(), nullable=True),
+ sa.Column('actor', sa.Integer(), nullable=True),
+ sa.Column('used', sa.Boolean(), nullable=True),
+ sa.Column('authenticated', sa.Boolean(), nullable=True),
+ sa.Column('verifier', sa.Unicode(), nullable=True),
+ sa.Column('callback', sa.Unicode(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['client'], ['core__clients.id']),
+ sa.PrimaryKeyConstraint('token'))
+
+ op.create_table(
+ 'core__user_bans',
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.Column('expiration_date', sa.Date(), nullable=True),
+ sa.Column('reason', sa.UnicodeText(), nullable=False),
+ sa.ForeignKeyConstraint(['user_id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('user_id'))
+
+ op.create_table(
+ 'core__access_tokens',
+ sa.Column('token', sa.Unicode(), nullable=False),
+ sa.Column('secret', sa.Unicode(), nullable=False),
+ sa.Column('actor', sa.Integer(), nullable=True),
+ sa.Column('request_token', sa.Unicode(), nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('updated', sa.DateTime(), nullable=False),
+ sa.ForeignKeyConstraint(['actor'], ['core__users.id']),
+ sa.ForeignKeyConstraint(['request_token'],
+ ['core__request_tokens.token']),
+ sa.PrimaryKeyConstraint('token'))
+
+ op.create_table(
+ 'core__attachment_files',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Unicode(), nullable=False),
+ sa.Column('filepath', sa.Unicode(),
+ nullable=True),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__collection_items',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('collection', sa.Integer(), nullable=False),
+ sa.Column('note', sa.UnicodeText(), nullable=True),
+ sa.Column('added', sa.DateTime(), nullable=False),
+ sa.Column('position', sa.Integer(), nullable=True),
+ sa.Column('object_id', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['collection'], ['core__collections.id']),
+ sa.ForeignKeyConstraint(['object_id'],
+ ['core__generic_model_reference.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('collection', 'object_id'))
+
+ op.create_index(
+ op.f('ix_core__collection_items_object_id'), 'core__collection_items',
+ ['object_id'], unique=False)
+
+ op.create_table(
+ 'core__comment_subscriptions',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('media_entry_id', sa.Integer(), nullable=False),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.Column('notify', sa.Boolean(), nullable=False),
+ sa.Column('send_email', sa.Boolean(), nullable=False),
+ sa.ForeignKeyConstraint(['media_entry_id'], ['core__media_entries.id']),
+ sa.ForeignKeyConstraint(['user_id'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_table(
+ 'core__media_tags',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('tag', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Unicode(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id']),
+ sa.ForeignKeyConstraint(['tag'], ['core__tags.id']),
+ sa.PrimaryKeyConstraint('id'),
+ sa.UniqueConstraint('tag', 'media_entry'))
+
+ op.create_index(
+ op.f('ix_core__media_tags_media_entry'), 'core__media_tags',
+ ['media_entry'], unique=False)
+
+ op.create_index(
+ op.f('ix_core__media_tags_tag'), 'core__media_tags',
+ ['tag'], unique=False)
+
+ op.create_table(
+ 'core__mediafiles',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('name_id', sa.SmallInteger(), nullable=False),
+ sa.Column('file_path', sa.Unicode(), nullable=True),
+ sa.Column('file_metadata', sa.UnicodeText(),
+ nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id']),
+ sa.ForeignKeyConstraint(['name_id'], ['core__file_keynames.id']),
+ sa.PrimaryKeyConstraint('media_entry', 'name_id'))
+
+ op.create_table(
+ 'core__processing_metadata',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('media_entry_id', sa.Integer(), nullable=False),
+ sa.Column('callback_url', sa.Unicode(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry_id'], ['core__media_entries.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_index(
+ op.f('ix_core__processing_metadata_media_entry_id'),
+ 'core__processing_metadata', ['media_entry_id'], unique=False)
+
+def downgrade():
+ # Downgrading from a first revision is nonsense.
+ pass
diff --git a/mediagoblin/db/migrations/versions/8429e33fdf7_remove_the_graveyard_objects_from_.py b/mediagoblin/db/migrations/versions/8429e33fdf7_remove_the_graveyard_objects_from_.py
new file mode 100644
index 00000000..978260df
--- /dev/null
+++ b/mediagoblin/db/migrations/versions/8429e33fdf7_remove_the_graveyard_objects_from_.py
@@ -0,0 +1,62 @@
+"""Remove the Graveyard objects from CommentNotification objects
+
+Revision ID: 8429e33fdf7
+Revises: 101510e3a713
+Create Date: 2016-01-19 08:01:21.577274
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '8429e33fdf7'
+down_revision = '101510e3a713'
+
+from alembic import op
+from sqlalchemy import MetaData
+from sqlalchemy.sql import and_
+from mediagoblin.db.migration_tools import inspect_table
+
+def upgrade():
+ """
+ This migration is very similiar to that of 101510e3a713. It removes objects
+ from Notification objects which are from Graveyard. It also iterates through
+ any reports which might have been filed and sets the objects to None.
+ """
+ db = op.get_bind()
+ metadata = MetaData(bind=db)
+ notification_table = inspect_table(metadata, "core__notifications")
+ report_table = inspect_table(metadata, "core__reports")
+ graveyard_table = inspect_table(metadata, "core__graveyard")
+ gmr_table = inspect_table(metadata, "core__generic_model_reference")
+
+ res = list(db.execute(gmr_table.select()))
+ for tombstone in res:
+ # Look up the gmr for the tombstone8
+ gmr = db.execute(gmr_table.select().where(and_(
+ gmr_table.c.obj_pk == tombstone.id,
+ gmr_table.c.model_type == "core__graveyard"
+ ))).first()
+
+ # If we can't find one we can skip it as it needs one to be part of
+ # the notification objects
+ if gmr is None:
+ continue
+
+ # Delete all notifications which link to the GMR as that's invalid.
+ db.execute(notification_table.delete().where(
+ notification_table.c.object_id == gmr.id
+ ))
+
+ # Deal with reports, we don't want to delete these though, they want to
+ # still exist if the object that was reported was deleted as that can
+ # be part of the resolution, just set it to None.
+ db.execute(report_table.update().where(
+ report_table.c.object_id == gmr.id
+ ).values(object_id=None))
+
+
+def downgrade():
+ """
+ There is nothing to do as this was a data migration, it'll downgrade
+ just fine without any steps. It's not like we can undo the deletions.
+ """
+ pass
diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index 048cc07c..e8b121d0 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -31,17 +31,96 @@ import uuid
import re
from datetime import datetime
+from pytz import UTC
from werkzeug.utils import cached_property
-from mediagoblin import mg_globals
from mediagoblin.media_types import FileTypeNotSupported
from mediagoblin.tools import common, licenses
from mediagoblin.tools.pluginapi import hook_handle
from mediagoblin.tools.text import cleaned_markdown_conversion
from mediagoblin.tools.url import slugify
+from mediagoblin.tools.translate import pass_to_ugettext as _
+class CommentingMixin(object):
+ """
+ Mixin that gives classes methods to get and add the comments on/to it
+
+ This assumes the model has a "comments" class which is a ForeignKey to the
+ Collection model. This will hold a Collection of comments which are
+ associated to this model. It also assumes the model has an "actor"
+ ForeignKey which points to the creator/publisher/etc. of the model.
+
+ NB: This is NOT the mixin for the Comment Model, this is for
+ other models which support commenting.
+ """
+
+ def get_comment_link(self):
+ # Import here to avoid cyclic imports
+ from mediagoblin.db.models import Comment, GenericModelReference
+
+ gmr = GenericModelReference.query.filter_by(
+ obj_pk=self.id,
+ model_type=self.__tablename__
+ ).first()
+
+ if gmr is None:
+ return None
+
+ link = Comment.query.filter_by(comment_id=gmr.id).first()
+ return link
+
+ def get_reply_to(self):
+ link = self.get_comment_link()
+ if link is None or link.target_id is None:
+ return None
+
+ return link.target()
+
+ def soft_delete(self, *args, **kwargs):
+ link = self.get_comment_link()
+ if link is not None:
+ link.delete()
+ super(CommentingMixin, self).soft_delete(*args, **kwargs)
+
+class GeneratePublicIDMixin(object):
+ """
+ Mixin that ensures that a the public_id field is populated.
+
+ The public_id is the ID that is used in the API, this must be globally
+ unique and dereferencable. This will be the URL for the API view of the
+ object. It's used in several places, not only is it used to give out via
+ the API but it's also vital information stored when a soft_deletion occurs
+ on the `Graveyard.public_id` field, this is needed to follow the spec which
+ says we have to be able to provide a shell of an object and return a 410
+ (rather than a 404) when a deleted object has been deleted.
+
+ This requires a the urlgen off the request object (`request.urlgen`) to be
+ provided as it's the ID is a URL.
+ """
+
+ def get_public_id(self, urlgen):
+ # Verify that the class this is on actually has a public_id field...
+ if "public_id" not in self.__table__.columns.keys():
+ raise Exception("Model has no public_id field")
+
+ # Great! the model has a public id, if it's None, let's create one!
+ if self.public_id is None:
+ # We need the internal ID for this so ensure we've been saved.
+ self.save(commit=False)
+
+ # Create the URL
+ self.public_id = urlgen(
+ "mediagoblin.api.object",
+ object_type=self.object_type,
+ id=str(uuid.uuid4()),
+ qualified=True
+ )
+ self.save()
+ return self.public_id
class UserMixin(object):
+ object_type = "person"
+
@property
def bio_html(self):
return cleaned_markdown_conversion(self.bio)
@@ -49,6 +128,7 @@ class UserMixin(object):
def url_for_self(self, urlgen, **kwargs):
"""Generate a URL for this User's home page."""
return urlgen('mediagoblin.user_pages.user_home',
+
user=self.username, **kwargs)
@@ -84,51 +164,59 @@ class GenerateSlugMixin(object):
generated bits until it's unique. That'll be a little bit of junk,
but at least it has the basis of a nice slug.
"""
+
#Is already a slug assigned? Check if it is valid
if self.slug:
- self.slug = slugify(self.slug)
+ slug = slugify(self.slug)
# otherwise, try to use the title.
elif self.title:
# assign slug based on title
- self.slug = slugify(self.title)
+ slug = slugify(self.title)
- # We don't want any empty string slugs
- if self.slug == u"":
- self.slug = None
+ else:
+ # We don't have any information to set a slug
+ return
- # Do we have anything at this point?
- # If not, we're not going to get a slug
- # so just return... we're not going to force one.
- if not self.slug:
- return # giving up!
+ # We don't want any empty string slugs
+ if slug == u"":
+ return
# Otherwise, let's see if this is unique.
- if self.check_slug_used(self.slug):
+ if self.check_slug_used(slug):
# It looks like it's being used... lame.
# Can we just append the object's id to the end?
if self.id:
- slug_with_id = u"%s-%s" % (self.slug, self.id)
+ slug_with_id = u"%s-%s" % (slug, self.id)
if not self.check_slug_used(slug_with_id):
self.slug = slug_with_id
return # success!
# okay, still no success;
# let's whack junk on there till it's unique.
- self.slug += '-' + uuid.uuid4().hex[:4]
+ slug += '-' + uuid.uuid4().hex[:4]
# keep going if necessary!
- while self.check_slug_used(self.slug):
- self.slug += uuid.uuid4().hex[:4]
+ while self.check_slug_used(slug):
+ slug += uuid.uuid4().hex[:4]
+
+ # self.check_slug_used(slug) must be False now so we have a slug that
+ # we can use now.
+ self.slug = slug
-class MediaEntryMixin(GenerateSlugMixin):
+class MediaEntryMixin(GenerateSlugMixin, GeneratePublicIDMixin):
def check_slug_used(self, slug):
# import this here due to a cyclic import issue
# (db.models -> db.mixin -> db.util -> db.models)
from mediagoblin.db.util import check_media_slug_used
- return check_media_slug_used(self.uploader, slug, self.id)
+ return check_media_slug_used(self.actor, slug, self.id)
+
+ @property
+ def object_type(self):
+ """ Converts media_type to pump-like type - don't use internally """
+ return self.media_type.split(".")[-1]
@property
def description_html(self):
@@ -177,7 +265,7 @@ class MediaEntryMixin(GenerateSlugMixin):
Use a slug if we have one, else use our 'id'.
"""
- uploader = self.get_uploader
+ uploader = self.get_actor
return urlgen(
'mediagoblin.user_pages.media_home',
@@ -192,16 +280,36 @@ class MediaEntryMixin(GenerateSlugMixin):
# TODO: implement generic fallback in case MEDIA_MANAGER does
# not specify one?
if u'thumb' in self.media_files:
- thumb_url = mg_globals.app.public_store.file_url(
+ thumb_url = self._app.public_store.file_url(
self.media_files[u'thumb'])
else:
# No thumbnail in media available. Get the media's
# MEDIA_MANAGER for the fallback icon and return static URL
# Raises FileTypeNotSupported in case no such manager is enabled
manager = self.media_manager
- thumb_url = mg_globals.app.staticdirector(manager[u'default_thumb'])
+ thumb_url = self._app.staticdirector(manager[u'default_thumb'])
return thumb_url
+ @property
+ def original_url(self):
+ """ Returns the URL for the original image
+ will return self.thumb_url if original url doesn't exist"""
+ if u"original" not in self.media_files:
+ return self.thumb_url
+
+ return self._app.public_store.file_url(
+ self.media_files[u"original"]
+ )
+
+ @property
+ def icon_url(self):
+ '''Return the icon URL (for usage in templates) if it exists'''
+ try:
+ return self._app.staticdirector(
+ self.media_manager['type_icon'])
+ except AttributeError:
+ return None
+
@cached_property
def media_manager(self):
"""Returns the MEDIA_MANAGER of the media's media_type
@@ -222,7 +330,17 @@ class MediaEntryMixin(GenerateSlugMixin):
Get the exception that's appropriate for this error
"""
if self.fail_error:
- return common.import_component(self.fail_error)
+ try:
+ return common.import_component(self.fail_error)
+ except ImportError:
+ # TODO(breton): fail_error should give some hint about why it
+ # failed. fail_error is used as a path to import().
+ # Unfortunately, I didn't know about that and put general error
+ # message there. Maybe it's for the best, because for admin,
+ # we could show even some raw python things. Anyway, this
+ # should be properly resolved. Now we are in a freeze, that's
+ # why I simply catch ImportError.
+ return None
def get_license_data(self):
"""Return license dict for requested license"""
@@ -248,7 +366,7 @@ class MediaEntryMixin(GenerateSlugMixin):
if 'Image DateTimeOriginal' in exif_all:
# format date taken
- takendate = datetime.datetime.strptime(
+ takendate = datetime.strptime(
exif_all['Image DateTimeOriginal']['printable'],
'%Y:%m:%d %H:%M:%S').date()
taken = takendate.strftime('%B %d %Y')
@@ -285,7 +403,9 @@ class MediaEntryMixin(GenerateSlugMixin):
return exif_short
-class MediaCommentMixin(object):
+class TextCommentMixin(GeneratePublicIDMixin):
+ object_type = "comment"
+
@property
def content_html(self):
"""
@@ -294,21 +414,29 @@ class MediaCommentMixin(object):
"""
return cleaned_markdown_conversion(self.content)
+ def __unicode__(self):
+ return u'<{klass} #{id} {actor} "{comment}">'.format(
+ klass=self.__class__.__name__,
+ id=self.id,
+ actor=self.get_actor,
+ comment=self.content)
+
def __repr__(self):
- return '<{klass} #{id} {author} "{comment}">'.format(
+ return '<{klass} #{id} {actor} "{comment}">'.format(
klass=self.__class__.__name__,
id=self.id,
- author=self.get_author,
+ actor=self.get_actor,
comment=self.content)
+class CollectionMixin(GenerateSlugMixin, GeneratePublicIDMixin):
+ object_type = "collection"
-class CollectionMixin(GenerateSlugMixin):
def check_slug_used(self, slug):
# import this here due to a cyclic import issue
# (db.models -> db.mixin -> db.util -> db.models)
from mediagoblin.db.util import check_collection_slug_used
- return check_collection_slug_used(self.creator, slug, self.id)
+ return check_collection_slug_used(self.actor, slug, self.id)
@property
def description_html(self):
@@ -328,7 +456,7 @@ class CollectionMixin(GenerateSlugMixin):
Use a slug if we have one, else use our 'id'.
"""
- creator = self.get_creator
+ creator = self.get_actor
return urlgen(
'mediagoblin.user_pages.user_collection',
@@ -336,6 +464,28 @@ class CollectionMixin(GenerateSlugMixin):
collection=self.slug_or_id,
**extra_args)
+ def add_to_collection(self, obj, content=None, commit=True):
+ """ Adds an object to the collection """
+ # It's here to prevent cyclic imports
+ from mediagoblin.db.models import CollectionItem
+
+ # Need the ID of this collection for this so check we've got one.
+ self.save(commit=False)
+
+ # Create the CollectionItem
+ item = CollectionItem()
+ item.collection = self.id
+ item.get_object = obj
+
+ if content is not None:
+ item.note = content
+
+ self.num_items = self.num_items + 1
+
+ # Save both!
+ self.save(commit=commit)
+ item.save(commit=commit)
+ return item
class CollectionItemMixin(object):
@property
@@ -345,3 +495,147 @@ class CollectionItemMixin(object):
Run through Markdown and the HTML cleaner.
"""
return cleaned_markdown_conversion(self.note)
+
+class ActivityMixin(GeneratePublicIDMixin):
+ object_type = "activity"
+
+ VALID_VERBS = ["add", "author", "create", "delete", "dislike", "favorite",
+ "follow", "like", "post", "share", "unfavorite", "unfollow",
+ "unlike", "unshare", "update", "tag"]
+
+ def get_url(self, request):
+ return request.urlgen(
+ "mediagoblin.user_pages.activity_view",
+ username=self.get_actor.username,
+ id=self.id,
+ qualified=True
+ )
+
+ def generate_content(self):
+ """ Produces a HTML content for object """
+ # some of these have simple and targetted. If self.target it set
+ # it will pick the targetted. If they DON'T have a targetted version
+ # the information in targetted won't be added to the content.
+ verb_to_content = {
+ "add": {
+ "simple" : _("{username} added {object}"),
+ "targetted": _("{username} added {object} to {target}"),
+ },
+ "author": {"simple": _("{username} authored {object}")},
+ "create": {"simple": _("{username} created {object}")},
+ "delete": {"simple": _("{username} deleted {object}")},
+ "dislike": {"simple": _("{username} disliked {object}")},
+ "favorite": {"simple": _("{username} favorited {object}")},
+ "follow": {"simple": _("{username} followed {object}")},
+ "like": {"simple": _("{username} liked {object}")},
+ "post": {
+ "simple": _("{username} posted {object}"),
+ "targetted": _("{username} posted {object} to {target}"),
+ },
+ "share": {"simple": _("{username} shared {object}")},
+ "unfavorite": {"simple": _("{username} unfavorited {object}")},
+ "unfollow": {"simple": _("{username} stopped following {object}")},
+ "unlike": {"simple": _("{username} unliked {object}")},
+ "unshare": {"simple": _("{username} unshared {object}")},
+ "update": {"simple": _("{username} updated {object}")},
+ "tag": {"simple": _("{username} tagged {object}")},
+ }
+
+ object_map = {
+ "image": _("an image"),
+ "comment": _("a comment"),
+ "collection": _("a collection"),
+ "video": _("a video"),
+ "audio": _("audio"),
+ "person": _("a person"),
+ }
+ obj = self.object()
+ target = None if self.target_id is None else self.target()
+ actor = self.get_actor
+ content = verb_to_content.get(self.verb, None)
+
+ if content is None or self.object is None:
+ return
+
+ # Decide what to fill the object with
+ if hasattr(obj, "title") and obj.title.strip(" "):
+ object_value = obj.title
+ elif obj.object_type in object_map:
+ object_value = object_map[obj.object_type]
+ else:
+ object_value = _("an object")
+
+ # Do we want to add a target (indirect object) to content?
+ if target is not None and "targetted" in content:
+ if hasattr(target, "title") and target.title.strip(" "):
+ target_value = target.title
+ elif target.object_type in object_map:
+ target_value = object_map[target.object_type]
+ else:
+ target_value = _("an object")
+
+ self.content = content["targetted"].format(
+ username=actor.username,
+ object=object_value,
+ target=target_value
+ )
+ else:
+ self.content = content["simple"].format(
+ username=actor.username,
+ object=object_value
+ )
+
+ return self.content
+
+ def serialize(self, request):
+ href = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=self.object_type,
+ id=self.id,
+ qualified=True
+ )
+ published = UTC.localize(self.published)
+ updated = UTC.localize(self.updated)
+ obj = {
+ "id": href,
+ "actor": self.get_actor.serialize(request),
+ "verb": self.verb,
+ "published": published.isoformat(),
+ "updated": updated.isoformat(),
+ "content": self.content,
+ "url": self.get_url(request),
+ "object": self.object().serialize(request),
+ "objectType": self.object_type,
+ "links": {
+ "self": {
+ "href": href,
+ },
+ },
+ }
+
+ if self.generator:
+ obj["generator"] = self.get_generator.serialize(request)
+
+ if self.title:
+ obj["title"] = self.title
+
+ if self.target_id is not None:
+ obj["target"] = self.target().serialize(request)
+
+ return obj
+
+ def unseralize(self, data):
+ """
+ Takes data given and set it on this activity.
+
+ Several pieces of data are not written on because of security
+ reasons. For example changing the author or id of an activity.
+ """
+ if "verb" in data:
+ self.verb = data["verb"]
+
+ if "title" in data:
+ self.title = data["title"]
+
+ if "content" in data:
+ self.content = data["content"]
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index e388bd5b..f4644b9f 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -18,79 +18,266 @@
TODO: indexes on foreignkeys, where useful.
"""
+from __future__ import print_function
+
import logging
import datetime
from sqlalchemy import Column, Integer, Unicode, UnicodeText, DateTime, \
Boolean, ForeignKey, UniqueConstraint, PrimaryKeyConstraint, \
- SmallInteger, Date
-from sqlalchemy.orm import relationship, backref, with_polymorphic
+ SmallInteger, Date, types
+from sqlalchemy.orm import relationship, backref, with_polymorphic, validates, \
+ class_mapper
from sqlalchemy.orm.collections import attribute_mapped_collection
+from sqlalchemy.sql import and_
from sqlalchemy.sql.expression import desc
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.util import memoized_property
from mediagoblin.db.extratypes import (PathTupleWithSlashes, JSONEncoded,
MutationDict)
-from mediagoblin.db.base import Base, DictReadAttrProxy
+from mediagoblin.db.base import Base, DictReadAttrProxy, FakeCursor
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, \
- MediaCommentMixin, CollectionMixin, CollectionItemMixin
+ CollectionMixin, CollectionItemMixin, ActivityMixin, TextCommentMixin, \
+ CommentingMixin
from mediagoblin.tools.files import delete_media_files
from mediagoblin.tools.common import import_component
+from mediagoblin.tools.routing import extract_url_arguments
-# It's actually kind of annoying how sqlalchemy-migrate does this, if
-# I understand it right, but whatever. Anyway, don't remove this :P
-#
-# We could do migration calls more manually instead of relying on
-# this import-based meddling...
-from migrate import changeset
+import six
+from six.moves.urllib.parse import urljoin
+from pytz import UTC
_log = logging.getLogger(__name__)
+class GenericModelReference(Base):
+ """
+ Represents a relationship to any model that is defined with a integer pk
+ """
+ __tablename__ = "core__generic_model_reference"
+
+ id = Column(Integer, primary_key=True)
+ obj_pk = Column(Integer, nullable=False)
+
+ # This will be the tablename of the model
+ model_type = Column(Unicode, nullable=False)
+
+ # Constrain it so obj_pk and model_type have to be unique
+ # They should be this order as the index is generated, "model_type" will be
+ # the major order as it's put first.
+ __table_args__ = (
+ UniqueConstraint("model_type", "obj_pk"),
+ {})
+
+ def get_object(self):
+ # This can happen if it's yet to be saved
+ if self.model_type is None or self.obj_pk is None:
+ return None
+
+ model = self._get_model_from_type(self.model_type)
+ return model.query.filter_by(id=self.obj_pk).first()
+
+ def set_object(self, obj):
+ model = obj.__class__
+
+ # Check we've been given a object
+ if not issubclass(model, Base):
+ raise ValueError("Only models can be set as using the GMR")
+
+ # Check that the model has an explicit __tablename__ declaration
+ if getattr(model, "__tablename__", None) is None:
+ raise ValueError("Models must have __tablename__ attribute")
+
+ # Check that it's not a composite primary key
+ primary_keys = [key.name for key in class_mapper(model).primary_key]
+ if len(primary_keys) > 1:
+ raise ValueError("Models can not have composite primary keys")
+
+ # Check that the field on the model is a an integer field
+ pk_column = getattr(model, primary_keys[0])
+ if not isinstance(pk_column.type, Integer):
+ raise ValueError("Only models with integer pks can be set")
+
+ if getattr(obj, pk_column.key) is None:
+ obj.save(commit=False)
+
+ self.obj_pk = getattr(obj, pk_column.key)
+ self.model_type = obj.__tablename__
+
+ def _get_model_from_type(self, model_type):
+ """ Gets a model from a tablename (model type) """
+ if getattr(type(self), "_TYPE_MAP", None) is None:
+ # We want to build on the class (not the instance) a map of all the
+ # models by the table name (type) for easy lookup, this is done on
+ # the class so it can be shared between all instances
+
+ # to prevent circular imports do import here
+ registry = dict(Base._decl_class_registry).values()
+ self._TYPE_MAP = dict(
+ ((m.__tablename__, m) for m in registry if hasattr(m, "__tablename__"))
+ )
+ setattr(type(self), "_TYPE_MAP", self._TYPE_MAP)
+
+ return self.__class__._TYPE_MAP[model_type]
+
+ @classmethod
+ def find_for_obj(cls, obj):
+ """ Finds a GMR for an object or returns None """
+ # Is there one for this already.
+ model = type(obj)
+ pk = getattr(obj, "id")
+
+ gmr = cls.query.filter_by(
+ obj_pk=pk,
+ model_type=model.__tablename__
+ )
+
+ return gmr.first()
+
+ @classmethod
+ def find_or_new(cls, obj):
+ """ Finds an existing GMR or creates a new one for the object """
+ gmr = cls.find_for_obj(obj)
+
+ # If there isn't one already create one
+ if gmr is None:
+ gmr = cls(
+ obj_pk=obj.id,
+ model_type=type(obj).__tablename__
+ )
+
+ return gmr
+
+class Location(Base):
+ """ Represents a physical location """
+ __tablename__ = "core__locations"
+
+ id = Column(Integer, primary_key=True)
+ name = Column(Unicode)
+ # GPS coordinates
+ position = Column(MutationDict.as_mutable(JSONEncoded))
+ address = Column(MutationDict.as_mutable(JSONEncoded))
+
+ @classmethod
+ def create(cls, data, obj):
+ location = cls()
+ location.unserialize(data)
+ location.save()
+ obj.location = location.id
+ return location
+
+ def serialize(self, request):
+ location = {"objectType": "place"}
+
+ if self.name is not None:
+ location["displayName"] = self.name
+
+ if self.position:
+ location["position"] = self.position
+
+ if self.address:
+ location["address"] = self.address
+
+ return location
+
+ def unserialize(self, data):
+ if "displayName" in data:
+ self.name = data["displayName"]
+
+ self.position = {}
+ self.address = {}
+
+ # nicer way to do this?
+ if "position" in data:
+ # TODO: deal with ISO 9709 formatted string as position
+ if "altitude" in data["position"]:
+ self.position["altitude"] = data["position"]["altitude"]
+
+ if "direction" in data["position"]:
+ self.position["direction"] = data["position"]["direction"]
+
+ if "longitude" in data["position"]:
+ self.position["longitude"] = data["position"]["longitude"]
+
+ if "latitude" in data["position"]:
+ self.position["latitude"] = data["position"]["latitude"]
+
+ if "address" in data:
+ if "formatted" in data["address"]:
+ self.address["formatted"] = data["address"]["formatted"]
+
+ if "streetAddress" in data["address"]:
+ self.address["streetAddress"] = data["address"]["streetAddress"]
+
+ if "locality" in data["address"]:
+ self.address["locality"] = data["address"]["locality"]
+
+ if "region" in data["address"]:
+ self.address["region"] = data["address"]["region"]
+
+ if "postalCode" in data["address"]:
+ self.address["postalCode"] = data["addresss"]["postalCode"]
+
+ if "country" in data["address"]:
+ self.address["country"] = data["address"]["country"]
class User(Base, UserMixin):
"""
- TODO: We should consider moving some rarely used fields
- into some sort of "shadow" table.
+ Base user that is common amongst LocalUser and RemoteUser.
+
+ This holds all the fields which are common between both the Local and Remote
+ user models.
+
+ NB: ForeignKeys should reference this User model and NOT the LocalUser or
+ RemoteUser models.
"""
__tablename__ = "core__users"
id = Column(Integer, primary_key=True)
- username = Column(Unicode, nullable=False, unique=True)
- # Note: no db uniqueness constraint on email because it's not
- # reliable (many email systems case insensitive despite against
- # the RFC) and because it would be a mess to implement at this
- # point.
- email = Column(Unicode, nullable=False)
- pw_hash = Column(Unicode)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
- # Intented to be nullable=False, but migrations would not work for it
- # set to nullable=True implicitly.
- wants_comment_notification = Column(Boolean, default=True)
- wants_notifications = Column(Boolean, default=True)
- license_preference = Column(Unicode)
url = Column(Unicode)
- bio = Column(UnicodeText) # ??
- uploaded = Column(Integer, default=0)
- upload_limit = Column(Integer)
+ bio = Column(UnicodeText)
+ name = Column(Unicode)
- ## TODO
- # plugin data would be in a separate model
+ # This is required for the polymorphic inheritance
+ type = Column(Unicode)
- def __repr__(self):
- return '<{0} #{1} {2} {3} "{4}">'.format(
- self.__class__.__name__,
- self.id,
- 'verified' if self.has_privilege(u'active') else 'non-verified',
- 'admin' if self.has_privilege(u'admin') else 'user',
- self.username)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+ location = Column(Integer, ForeignKey("core__locations.id"))
+
+ # Lazy getters
+ get_location = relationship("Location", lazy="joined")
+
+ __mapper_args__ = {
+ 'polymorphic_identity': 'user',
+ 'polymorphic_on': type,
+ }
+
+ deletion_mode = Base.SOFT_DELETE
+
+ def soft_delete(self, *args, **kwargs):
+ # Find all the Collections and delete those
+ for collection in Collection.query.filter_by(actor=self.id):
+ collection.delete(**kwargs)
+
+ # Find all the comments and delete those too
+ for comment in TextComment.query.filter_by(actor=self.id):
+ comment.delete(**kwargs)
+
+ # Find all the activities and delete those too
+ for activity in Activity.query.filter_by(actor=self.id):
+ activity.delete(**kwargs)
- def delete(self, **kwargs):
+ super(User, self).soft_delete(*args, **kwargs)
+
+
+ def delete(self, *args, **kwargs):
"""Deletes a User and all related entries/comments/files/..."""
# Collections get deleted by relationships.
- media_entries = MediaEntry.query.filter(MediaEntry.uploader == self.id)
+ media_entries = MediaEntry.query.filter(MediaEntry.actor == self.id)
for media in media_entries:
# TODO: Make sure that "MediaEntry.delete()" also deletes
# all related files/Comments
@@ -102,28 +289,30 @@ class User(Base, UserMixin):
clean_orphan_tags(commit=False)
# Delete user, pass through commit=False/True in kwargs
- super(User, self).delete(**kwargs)
- _log.info('Deleted user "{0}" account'.format(self.username))
+ username = self.username
+ super(User, self).delete(*args, **kwargs)
+ _log.info('Deleted user "{0}" account'.format(username))
- def has_privilege(self,*priv_names):
+ def has_privilege(self, privilege, allow_admin=True):
"""
This method checks to make sure a user has all the correct privileges
to access a piece of content.
- :param priv_names A variable number of unicode objects which rep-
- -resent the different privileges which may give
- the user access to this content. If you pass
- multiple arguments, the user will be granted
- access if they have ANY of the privileges
- passed.
+ :param privilege A unicode object which represent the different
+ privileges which may give the user access to
+ content.
+
+ :param allow_admin If this is set to True the then if the user is
+ an admin, then this will always return True
+ even if the user hasn't been given the
+ privilege. (defaults to True)
"""
- if len(priv_names) == 1:
- priv = Privilege.query.filter(
- Privilege.privilege_name==priv_names[0]).one()
- return (priv in self.all_privileges)
- elif len(priv_names) > 1:
- return self.has_privilege(priv_names[0]) or \
- self.has_privilege(*priv_names[1:])
+ priv = Privilege.query.filter_by(privilege_name=privilege).one()
+ if priv in self.all_privileges:
+ return True
+ elif allow_admin and self.has_privilege(u'admin', allow_admin=False):
+ return True
+
return False
def is_banned(self):
@@ -135,6 +324,125 @@ class User(Base, UserMixin):
"""
return UserBan.query.get(self.id) is not None
+ def serialize(self, request):
+ published = UTC.localize(self.created)
+ updated = UTC.localize(self.updated)
+ user = {
+ "published": published.isoformat(),
+ "updated": updated.isoformat(),
+ "objectType": self.object_type,
+ "pump_io": {
+ "shared": False,
+ "followed": False,
+ },
+ }
+
+ if self.bio:
+ user.update({"summary": self.bio})
+ if self.url:
+ user.update({"url": self.url})
+ if self.location:
+ user.update({"location": self.get_location.serialize(request)})
+
+ return user
+
+ def unserialize(self, data):
+ if "summary" in data:
+ self.bio = data["summary"]
+
+ if "location" in data:
+ Location.create(data, self)
+
+class LocalUser(User):
+ """ This represents a user registered on this instance """
+ __tablename__ = "core__local_users"
+
+ id = Column(Integer, ForeignKey("core__users.id"), primary_key=True)
+ username = Column(Unicode, nullable=False, unique=True)
+ # Note: no db uniqueness constraint on email because it's not
+ # reliable (many email systems case insensitive despite against
+ # the RFC) and because it would be a mess to implement at this
+ # point.
+ email = Column(Unicode, nullable=False)
+ pw_hash = Column(Unicode)
+
+ # Intented to be nullable=False, but migrations would not work for it
+ # set to nullable=True implicitly.
+ wants_comment_notification = Column(Boolean, default=True)
+ wants_notifications = Column(Boolean, default=True)
+ license_preference = Column(Unicode)
+ uploaded = Column(Integer, default=0)
+ upload_limit = Column(Integer)
+
+ __mapper_args__ = {
+ "polymorphic_identity": "user_local",
+ }
+
+ ## TODO
+ # plugin data would be in a separate model
+
+ def __repr__(self):
+ return '<{0} #{1} {2} {3} "{4}">'.format(
+ self.__class__.__name__,
+ self.id,
+ 'verified' if self.has_privilege(u'active') else 'non-verified',
+ 'admin' if self.has_privilege(u'admin') else 'user',
+ self.username)
+
+ def get_public_id(self, host):
+ return "acct:{0}@{1}".format(self.username, host)
+
+ def serialize(self, request):
+ user = {
+ "id": self.get_public_id(request.host),
+ "preferredUsername": self.username,
+ "displayName": self.get_public_id(request.host).split(":", 1)[1],
+ "links": {
+ "self": {
+ "href": request.urlgen(
+ "mediagoblin.api.user.profile",
+ username=self.username,
+ qualified=True
+ ),
+ },
+ "activity-inbox": {
+ "href": request.urlgen(
+ "mediagoblin.api.inbox",
+ username=self.username,
+ qualified=True
+ )
+ },
+ "activity-outbox": {
+ "href": request.urlgen(
+ "mediagoblin.api.feed",
+ username=self.username,
+ qualified=True
+ )
+ },
+ },
+ }
+
+ user.update(super(LocalUser, self).serialize(request))
+ return user
+
+class RemoteUser(User):
+ """ User that is on another (remote) instance """
+ __tablename__ = "core__remote_users"
+
+ id = Column(Integer, ForeignKey("core__users.id"), primary_key=True)
+ webfinger = Column(Unicode, unique=True)
+
+ __mapper_args__ = {
+ 'polymorphic_identity': 'user_remote'
+ }
+
+ def __repr__(self):
+ return "<{0} #{1} {2}>".format(
+ self.__class__.__name__,
+ self.id,
+ self.webfinger
+ )
+
class Client(Base):
"""
@@ -146,8 +454,8 @@ class Client(Base):
secret = Column(Unicode, nullable=False)
expirey = Column(DateTime, nullable=True)
application_type = Column(Unicode, nullable=False)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
- updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
# optional stuff
redirect_uri = Column(JSONEncoded, nullable=True)
@@ -170,13 +478,15 @@ class RequestToken(Base):
token = Column(Unicode, primary_key=True)
secret = Column(Unicode, nullable=False)
client = Column(Unicode, ForeignKey(Client.id))
- user = Column(Integer, ForeignKey(User.id), nullable=True)
+ actor = Column(Integer, ForeignKey(User.id), nullable=True)
used = Column(Boolean, default=False)
authenticated = Column(Boolean, default=False)
verifier = Column(Unicode, nullable=True)
callback = Column(Unicode, nullable=False, default=u"oob")
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
- updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+ get_client = relationship(Client)
class AccessToken(Base):
"""
@@ -186,10 +496,12 @@ class AccessToken(Base):
token = Column(Unicode, nullable=False, primary_key=True)
secret = Column(Unicode, nullable=False)
- user = Column(Integer, ForeignKey(User.id))
+ actor = Column(Integer, ForeignKey(User.id))
request_token = Column(Unicode, ForeignKey(RequestToken.token))
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
- updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+ get_requesttoken = relationship(RequestToken)
class NonceTimestamp(Base):
@@ -201,25 +513,31 @@ class NonceTimestamp(Base):
nonce = Column(Unicode, nullable=False, primary_key=True)
timestamp = Column(DateTime, nullable=False, primary_key=True)
-
-class MediaEntry(Base, MediaEntryMixin):
+class MediaEntry(Base, MediaEntryMixin, CommentingMixin):
"""
TODO: Consider fetching the media_files using join
"""
__tablename__ = "core__media_entries"
id = Column(Integer, primary_key=True)
- uploader = Column(Integer, ForeignKey(User.id), nullable=False, index=True)
+ public_id = Column(Unicode, unique=True, nullable=True)
+ remote = Column(Boolean, default=False)
+
+ actor = Column(Integer, ForeignKey(User.id), nullable=False, index=True)
title = Column(Unicode, nullable=False)
slug = Column(Unicode)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now,
- index=True)
description = Column(UnicodeText) # ??
media_type = Column(Unicode, nullable=False)
state = Column(Unicode, default=u'unprocessed', nullable=False)
# or use sqlalchemy.types.Enum?
license = Column(Unicode)
file_size = Column(Integer, default=0)
+ location = Column(Integer, ForeignKey("core__locations.id"))
+ get_location = relationship("Location", lazy="joined")
+
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow,
+ index=True)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
fail_error = Column(Unicode)
fail_metadata = Column(JSONEncoded)
@@ -231,10 +549,12 @@ class MediaEntry(Base, MediaEntryMixin):
queued_task_id = Column(Unicode)
__table_args__ = (
- UniqueConstraint('uploader', 'slug'),
+ UniqueConstraint('actor', 'slug'),
{})
- get_uploader = relationship(User)
+ deletion_mode = Base.SOFT_DELETE
+
+ get_actor = relationship(User)
media_files_helper = relationship("MediaFile",
collection_class=attribute_mapped_collection("name"),
@@ -260,26 +580,51 @@ class MediaEntry(Base, MediaEntryMixin):
creator=lambda v: MediaTag(name=v["name"], slug=v["slug"])
)
- collections_helper = relationship("CollectionItem",
- cascade="all, delete-orphan"
- )
- collections = association_proxy("collections_helper", "in_collection")
media_metadata = Column(MutationDict.as_mutable(JSONEncoded),
default=MutationDict())
## TODO
# fail_error
+ @property
+ def get_uploader(self):
+ # for compatibility
+ return self.get_actor
+
+ @property
+ def uploader(self):
+ # for compatibility
+ return self.actor
+
+ @property
+ def collections(self):
+ """ Get any collections that this MediaEntry is in """
+ return list(Collection.query.join(Collection.collection_items).join(
+ CollectionItem.object_helper
+ ).filter(
+ and_(
+ GenericModelReference.model_type == self.__tablename__,
+ GenericModelReference.obj_pk == self.id
+ )
+ ))
+
def get_comments(self, ascending=False):
- order_col = MediaComment.created
- if not ascending:
- order_col = desc(order_col)
- return self.all_comments.order_by(order_col)
+ query = Comment.query.join(Comment.target_helper).filter(and_(
+ GenericModelReference.obj_pk == self.id,
+ GenericModelReference.model_type == self.__tablename__
+ ))
+
+ if ascending:
+ query = query.order_by(Comment.added.asc())
+ else:
+ query = query.order_by(Comment.added.desc())
+
+ return query
def url_to_prev(self, urlgen):
"""get the next 'newer' entry by this user"""
media = MediaEntry.query.filter(
- (MediaEntry.uploader == self.uploader)
+ (MediaEntry.actor == self.actor)
& (MediaEntry.state == u'processed')
& (MediaEntry.id > self.id)).order_by(MediaEntry.id).first()
@@ -289,7 +634,7 @@ class MediaEntry(Base, MediaEntryMixin):
def url_to_next(self, urlgen):
"""get the next 'older' entry by this user"""
media = MediaEntry.query.filter(
- (MediaEntry.uploader == self.uploader)
+ (MediaEntry.actor == self.actor)
& (MediaEntry.state == u'processed')
& (MediaEntry.id < self.id)).order_by(desc(MediaEntry.id)).first()
@@ -302,7 +647,7 @@ class MediaEntry(Base, MediaEntryMixin):
return the value of the key.
"""
media_file = MediaFile.query.filter_by(media_entry=self.id,
- name=unicode(file_key)).first()
+ name=six.text_type(file_key)).first()
if media_file:
if metadata_key:
@@ -315,11 +660,11 @@ class MediaEntry(Base, MediaEntryMixin):
Update the file_metadata of a MediaFile.
"""
media_file = MediaFile.query.filter_by(media_entry=self.id,
- name=unicode(file_key)).first()
+ name=six.text_type(file_key)).first()
file_metadata = media_file.file_metadata or {}
- for key, value in kwargs.iteritems():
+ for key, value in six.iteritems(kwargs):
file_metadata[key] = value
media_file.file_metadata = file_metadata
@@ -344,7 +689,7 @@ class MediaEntry(Base, MediaEntryMixin):
media_data.get_media_entry = self
else:
# Update old media data
- for field, value in kwargs.iteritems():
+ for field, value in six.iteritems(kwargs):
setattr(media_data, field, value)
@memoized_property
@@ -352,13 +697,24 @@ class MediaEntry(Base, MediaEntryMixin):
return import_component(self.media_type + '.models:BACKREF_NAME')
def __repr__(self):
- safe_title = self.title.encode('ascii', 'replace')
+ if six.PY2:
+ # obj.__repr__() should return a str on Python 2
+ safe_title = self.title.encode('utf-8', 'replace')
+ else:
+ safe_title = self.title
return '<{classname} {id}: {title}>'.format(
classname=self.__class__.__name__,
id=self.id,
title=safe_title)
+ def soft_delete(self, *args, **kwargs):
+ # Find all of the media comments for this and delete them
+ for comment in self.get_comments():
+ comment.delete(*args, **kwargs)
+
+ super(MediaEntry, self).soft_delete(*args, **kwargs)
+
def delete(self, del_orphan_tags=True, **kwargs):
"""Delete MediaEntry and all related files/attachments/comments
@@ -373,10 +729,10 @@ class MediaEntry(Base, MediaEntryMixin):
# Delete all related files/attachments
try:
delete_media_files(self)
- except OSError, error:
+ except OSError as error:
# Returns list of files we failed to delete
_log.error('No such files from the user "{1}" to delete: '
- '{0}'.format(str(error), self.get_uploader))
+ '{0}'.format(str(error), self.get_actor))
_log.info('Deleted Media entry id "{0}"'.format(self.id))
# Related MediaTag's are automatically cleaned, but we might
# want to clean out unused Tag's too.
@@ -388,6 +744,96 @@ class MediaEntry(Base, MediaEntryMixin):
# pass through commit=False/True in kwargs
super(MediaEntry, self).delete(**kwargs)
+ def serialize(self, request, show_comments=True):
+ """ Unserialize MediaEntry to object """
+ author = self.get_actor
+ published = UTC.localize(self.created)
+ updated = UTC.localize(self.updated)
+ public_id = self.get_public_id(request.urlgen)
+ context = {
+ "id": public_id,
+ "author": author.serialize(request),
+ "objectType": self.object_type,
+ "url": self.url_for_self(request.urlgen, qualified=True),
+ "image": {
+ "url": urljoin(request.host_url, self.thumb_url),
+ },
+ "fullImage":{
+ "url": urljoin(request.host_url, self.original_url),
+ },
+ "published": published.isoformat(),
+ "updated": updated.isoformat(),
+ "pump_io": {
+ "shared": False,
+ },
+ "links": {
+ "self": {
+ "href": public_id,
+ },
+
+ }
+ }
+
+ if self.title:
+ context["displayName"] = self.title
+
+ if self.description:
+ context["content"] = self.description
+
+ if self.license:
+ context["license"] = self.license
+
+ if self.location:
+ context["location"] = self.get_location.serialize(request)
+
+ if show_comments:
+ comments = [
+ l.comment().serialize(request) for l in self.get_comments()]
+ total = len(comments)
+ context["replies"] = {
+ "totalItems": total,
+ "items": comments,
+ "url": request.urlgen(
+ "mediagoblin.api.object.comments",
+ object_type=self.object_type,
+ id=self.id,
+ qualified=True
+ ),
+ }
+
+ # Add image height and width if possible. We didn't use to store this
+ # data and we're not able (and maybe not willing) to re-process all
+ # images so it's possible this might not exist.
+ if self.get_file_metadata("thumb", "height"):
+ height = self.get_file_metadata("thumb", "height")
+ context["image"]["height"] = height
+ if self.get_file_metadata("thumb", "width"):
+ width = self.get_file_metadata("thumb", "width")
+ context["image"]["width"] = width
+ if self.get_file_metadata("original", "height"):
+ height = self.get_file_metadata("original", "height")
+ context["fullImage"]["height"] = height
+ if self.get_file_metadata("original", "height"):
+ width = self.get_file_metadata("original", "width")
+ context["fullImage"]["width"] = width
+
+ return context
+
+ def unserialize(self, data):
+ """ Takes API objects and unserializes on existing MediaEntry """
+ if "displayName" in data:
+ self.title = data["displayName"]
+
+ if "content" in data:
+ self.description = data["content"]
+
+ if "license" in data:
+ self.license = data["license"]
+
+ if "location" in data:
+ License.create(data["location"], self)
+
+ return True
class FileKeynames(Base):
"""
@@ -445,7 +891,7 @@ class MediaAttachmentFile(Base):
nullable=False)
name = Column(Unicode, nullable=False)
filepath = Column(PathTupleWithSlashes)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
@property
def dict_view(self):
@@ -479,7 +925,7 @@ class MediaTag(Base):
nullable=False, index=True)
tag = Column(Integer, ForeignKey(Tag.id), nullable=False, index=True)
name = Column(Unicode)
- # created = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ # created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
__table_args__ = (
UniqueConstraint('tag', 'media_entry'),
@@ -502,65 +948,218 @@ class MediaTag(Base):
"""A dict like view on this object"""
return DictReadAttrProxy(self)
+class Comment(Base):
+ """
+ Link table between a response and another object that can have replies.
-class MediaComment(Base, MediaCommentMixin):
+ This acts as a link table between an object and the comments on it, it's
+ done like this so that you can look up all the comments without knowing
+ whhich comments are on an object before hand. Any object can be a comment
+ and more or less any object can accept comments too.
+
+ Important: This is NOT the old MediaComment table.
+ """
+ __tablename__ = "core__comment_links"
+
+ id = Column(Integer, primary_key=True)
+
+ # The GMR to the object the comment is on.
+ target_id = Column(
+ Integer,
+ ForeignKey(GenericModelReference.id),
+ nullable=False
+ )
+ target_helper = relationship(
+ GenericModelReference,
+ foreign_keys=[target_id]
+ )
+ target = association_proxy("target_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+
+ # The comment object
+ comment_id = Column(
+ Integer,
+ ForeignKey(GenericModelReference.id),
+ nullable=False
+ )
+ comment_helper = relationship(
+ GenericModelReference,
+ foreign_keys=[comment_id]
+ )
+ comment = association_proxy("comment_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+
+ # When it was added
+ added = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+ @property
+ def get_author(self):
+ # for compatibility
+ return self.comment().get_actor # noqa
+
+ def __getattr__(self, attr):
+ if attr.startswith('_'):
+ # if attr starts with '_', then it's probably some internal
+ # sqlalchemy variable. Since __getattr__ is called when
+ # non-existing attributes are being accessed, we should not try to
+ # fetch it from self.comment()
+ raise AttributeError
+ try:
+ _log.debug('Old attr is being accessed: {0}'.format(attr))
+ return getattr(self.comment(), attr) # noqa
+ except Exception as e:
+ _log.error(e)
+ raise
+
+class TextComment(Base, TextCommentMixin, CommentingMixin):
+ """
+ A basic text comment, this is a usually short amount of text and nothing else
+ """
+ # This is a legacy from when Comments where just on MediaEntry objects.
__tablename__ = "core__media_comments"
id = Column(Integer, primary_key=True)
- media_entry = Column(
- Integer, ForeignKey(MediaEntry.id), nullable=False, index=True)
- author = Column(Integer, ForeignKey(User.id), nullable=False)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ public_id = Column(Unicode, unique=True)
+ actor = Column(Integer, ForeignKey(User.id), nullable=False)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
content = Column(UnicodeText, nullable=False)
+ location = Column(Integer, ForeignKey("core__locations.id"))
+ get_location = relationship("Location", lazy="joined")
# Cascade: Comments are owned by their creator. So do the full thing.
# lazy=dynamic: People might post a *lot* of comments,
# so make the "posted_comments" a query-like thing.
- get_author = relationship(User,
+ get_actor = relationship(User,
backref=backref("posted_comments",
lazy="dynamic",
cascade="all, delete-orphan"))
- get_entry = relationship(MediaEntry,
- backref=backref("comments",
- lazy="dynamic",
- cascade="all, delete-orphan"))
-
- # Cascade: Comments are somewhat owned by their MediaEntry.
- # So do the full thing.
- # lazy=dynamic: MediaEntries might have many comments,
- # so make the "all_comments" a query-like thing.
- get_media_entry = relationship(MediaEntry,
- backref=backref("all_comments",
- lazy="dynamic",
- cascade="all, delete-orphan"))
-
-
-class Collection(Base, CollectionMixin):
- """An 'album' or 'set' of media by a user.
+ deletion_mode = Base.SOFT_DELETE
+
+ def serialize(self, request):
+ """ Unserialize to python dictionary for API """
+ target = self.get_reply_to()
+ # If this is target just.. give them nothing?
+ if target is None:
+ target = {}
+ else:
+ target = target.serialize(request, show_comments=False)
+
+
+ author = self.get_actor
+ published = UTC.localize(self.created)
+ context = {
+ "id": self.get_public_id(request.urlgen),
+ "objectType": self.object_type,
+ "content": self.content,
+ "inReplyTo": target,
+ "author": author.serialize(request),
+ "published": published.isoformat(),
+ "updated": published.isoformat(),
+ }
+
+ if self.location:
+ context["location"] = self.get_location.seralize(request)
+
+ return context
+
+ def unserialize(self, data, request):
+ """ Takes API objects and unserializes on existing comment """
+ if "content" in data:
+ self.content = data["content"]
+
+ if "location" in data:
+ Location.create(data["location"], self)
+
+
+ # Handle changing the reply ID
+ if "inReplyTo" in data:
+ # Validate that the ID is correct
+ try:
+ id = extract_url_arguments(
+ url=data["inReplyTo"]["id"],
+ urlmap=request.app.url_map
+ )["id"]
+ except ValueError:
+ raise False
+
+ public_id = request.urlgen(
+ "mediagoblin.api.object",
+ id=id,
+ object_type=data["inReplyTo"]["objectType"],
+ qualified=True
+ )
+
+ media = MediaEntry.query.filter_by(public_id=public_id).first()
+ if media is None:
+ return False
+
+ # We need an ID for this model.
+ self.save(commit=False)
+
+ # Create the link
+ link = Comment()
+ link.target = media
+ link.comment = self
+ link.save()
+
+ return True
+
+class Collection(Base, CollectionMixin, CommentingMixin):
+ """A representation of a collection of objects.
+
+ This holds a group/collection of objects that could be a user defined album
+ or their inbox, outbox, followers, etc. These are always ordered and accessable
+ via the API and web.
+
+ The collection has a number of types which determine what kind of collection
+ it is, for example the users inbox will be of `Collection.INBOX_TYPE` that will
+ be stored on the `Collection.type` field. It's important to set the correct type.
On deletion, contained CollectionItems get automatically reaped via
SQL cascade"""
__tablename__ = "core__collections"
id = Column(Integer, primary_key=True)
+ public_id = Column(Unicode, unique=True)
title = Column(Unicode, nullable=False)
slug = Column(Unicode)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now,
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow,
index=True)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
description = Column(UnicodeText)
- creator = Column(Integer, ForeignKey(User.id), nullable=False)
- # TODO: No of items in Collection. Badly named, can we migrate to num_items?
- items = Column(Integer, default=0)
+ actor = Column(Integer, ForeignKey(User.id), nullable=False)
+ num_items = Column(Integer, default=0)
+
+ # There are lots of different special types of collections in the pump.io API
+ # for example: followers, following, inbox, outbox, etc. See type constants
+ # below the fields on this model.
+ type = Column(Unicode, nullable=False)
+
+ # Location
+ location = Column(Integer, ForeignKey("core__locations.id"))
+ get_location = relationship("Location", lazy="joined")
# Cascade: Collections are owned by their creator. So do the full thing.
- get_creator = relationship(User,
+ get_actor = relationship(User,
backref=backref("collections",
cascade="all, delete-orphan"))
-
__table_args__ = (
- UniqueConstraint('creator', 'slug'),
+ UniqueConstraint("actor", "slug"),
{})
+ deletion_mode = Base.SOFT_DELETE
+
+ # These are the types, It's strongly suggested if new ones are invented they
+ # are prefixed to ensure they're unique from other types. Any types used in
+ # the main mediagoblin should be prefixed "core-"
+ INBOX_TYPE = "core-inbox"
+ OUTBOX_TYPE = "core-outbox"
+ FOLLOWER_TYPE = "core-followers"
+ FOLLOWING_TYPE = "core-following"
+ COMMENT_TYPE = "core-comments"
+ USER_DEFINED_TYPE = "core-user-defined"
+
def get_collection_items(self, ascending=False):
#TODO, is this still needed with self.collection_items being available?
order_col = CollectionItem.position
@@ -569,28 +1168,58 @@ class Collection(Base, CollectionMixin):
return CollectionItem.query.filter_by(
collection=self.id).order_by(order_col)
+ def __repr__(self):
+ safe_title = self.title.encode('ascii', 'replace')
+ return '<{classname} #{id}: {title} by {actor}>'.format(
+ id=self.id,
+ classname=self.__class__.__name__,
+ actor=self.actor,
+ title=safe_title)
+
+ def serialize(self, request):
+ # Get all serialized output in a list
+ items = [i.serialize(request) for i in self.get_collection_items()]
+ return {
+ "totalItems": self.num_items,
+ "url": self.url_for_self(request.urlgen, qualified=True),
+ "items": items,
+ }
+
class CollectionItem(Base, CollectionItemMixin):
__tablename__ = "core__collection_items"
id = Column(Integer, primary_key=True)
- media_entry = Column(
- Integer, ForeignKey(MediaEntry.id), nullable=False, index=True)
+
collection = Column(Integer, ForeignKey(Collection.id), nullable=False)
note = Column(UnicodeText, nullable=True)
- added = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ added = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
position = Column(Integer)
-
# Cascade: CollectionItems are owned by their Collection. So do the full thing.
in_collection = relationship(Collection,
backref=backref(
"collection_items",
cascade="all, delete-orphan"))
- get_media_entry = relationship(MediaEntry)
+ # Link to the object (could be anything.
+ object_id = Column(
+ Integer,
+ ForeignKey(GenericModelReference.id),
+ nullable=False,
+ index=True
+ )
+ object_helper = relationship(
+ GenericModelReference,
+ foreign_keys=[object_id]
+ )
+ get_object = association_proxy(
+ "object_helper",
+ "get_object",
+ creator=GenericModelReference.find_or_new
+ )
__table_args__ = (
- UniqueConstraint('collection', 'media_entry'),
+ UniqueConstraint('collection', 'object_id'),
{})
@property
@@ -598,6 +1227,17 @@ class CollectionItem(Base, CollectionItemMixin):
"""A dict like view on this object"""
return DictReadAttrProxy(self)
+ def __repr__(self):
+ return '<{classname} #{id}: Object {obj} in {collection}>'.format(
+ id=self.id,
+ classname=self.__class__.__name__,
+ collection=self.collection,
+ obj=self.get_object()
+ )
+
+ def serialize(self, request):
+ return self.get_object().serialize(request)
+
class ProcessingMetaData(Base):
__tablename__ = 'core__processing_metadata'
@@ -620,7 +1260,7 @@ class CommentSubscription(Base):
__tablename__ = 'core__comment_subscriptions'
id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
media_entry_id = Column(Integer, ForeignKey(MediaEntry.id), nullable=False)
media_entry = relationship(MediaEntry,
@@ -649,10 +1289,13 @@ class CommentSubscription(Base):
class Notification(Base):
__tablename__ = 'core__notifications'
id = Column(Integer, primary_key=True)
- type = Column(Unicode)
- created = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ object_id = Column(Integer, ForeignKey(GenericModelReference.id))
+ object_helper = relationship(GenericModelReference)
+ obj = association_proxy("object_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
user_id = Column(Integer, ForeignKey('core__users.id'), nullable=False,
index=True)
seen = Column(Boolean, default=lambda: False, index=True)
@@ -660,11 +1303,6 @@ class Notification(Base):
User,
backref=backref('notifications', cascade='all, delete-orphan'))
- __mapper_args__ = {
- 'polymorphic_identity': 'notification',
- 'polymorphic_on': type
- }
-
def __repr__(self):
return '<{klass} #{id}: {user}: {subject} ({seen})>'.format(
id=self.id,
@@ -673,43 +1311,17 @@ class Notification(Base):
subject=getattr(self, 'subject', None),
seen='unseen' if not self.seen else 'seen')
+ def __unicode__(self):
+ return u'<{klass} #{id}: {user}: {subject} ({seen})>'.format(
+ id=self.id,
+ klass=self.__class__.__name__,
+ user=self.user,
+ subject=getattr(self, 'subject', None),
+ seen='unseen' if not self.seen else 'seen')
-class CommentNotification(Notification):
- __tablename__ = 'core__comment_notifications'
- id = Column(Integer, ForeignKey(Notification.id), primary_key=True)
-
- subject_id = Column(Integer, ForeignKey(MediaComment.id))
- subject = relationship(
- MediaComment,
- backref=backref('comment_notifications', cascade='all, delete-orphan'))
-
- __mapper_args__ = {
- 'polymorphic_identity': 'comment_notification'
- }
-
-
-class ProcessingNotification(Notification):
- __tablename__ = 'core__processing_notifications'
-
- id = Column(Integer, ForeignKey(Notification.id), primary_key=True)
-
- subject_id = Column(Integer, ForeignKey(MediaEntry.id))
- subject = relationship(
- MediaEntry,
- backref=backref('processing_notifications',
- cascade='all, delete-orphan'))
-
- __mapper_args__ = {
- 'polymorphic_identity': 'processing_notification'
- }
-
-with_polymorphic(
- Notification,
- [ProcessingNotification, CommentNotification])
-
-class ReportBase(Base):
+class Report(Base):
"""
- This is the basic report object which the other reports are based off of.
+ Represents a report that someone might file against Media, Comments, etc.
:keyword reporter_id Holds the id of the user who created
the report, as an Integer column.
@@ -722,8 +1334,6 @@ class ReportBase(Base):
an Integer column.
:keyword created Holds a datetime column of when the re-
-port was filed.
- :keyword discriminator This column distinguishes between the
- different types of reports.
:keyword resolver_id Holds the id of the moderator/admin who
resolved the report.
:keyword resolved Holds the DateTime object which descri-
@@ -732,8 +1342,11 @@ class ReportBase(Base):
resolver's reasons for resolving
the report this way. Some of this
is auto-generated
+ :keyword object_id Holds the ID of the GenericModelReference
+ which points to the reported object.
"""
__tablename__ = 'core__reports'
+
id = Column(Integer, primary_key=True)
reporter_id = Column(Integer, ForeignKey(User.id), nullable=False)
reporter = relationship(
@@ -741,7 +1354,7 @@ class ReportBase(Base):
backref=backref("reports_filed_by",
lazy="dynamic",
cascade="all, delete-orphan"),
- primaryjoin="User.id==ReportBase.reporter_id")
+ primaryjoin="User.id==Report.reporter_id")
report_content = Column(UnicodeText)
reported_user_id = Column(Integer, ForeignKey(User.id), nullable=False)
reported_user = relationship(
@@ -749,70 +1362,42 @@ class ReportBase(Base):
backref=backref("reports_filed_on",
lazy="dynamic",
cascade="all, delete-orphan"),
- primaryjoin="User.id==ReportBase.reported_user_id")
- created = Column(DateTime, nullable=False, default=datetime.datetime.now())
- discriminator = Column('type', Unicode(50))
+ primaryjoin="User.id==Report.reported_user_id")
+ created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
resolver_id = Column(Integer, ForeignKey(User.id))
resolver = relationship(
User,
backref=backref("reports_resolved_by",
lazy="dynamic",
cascade="all, delete-orphan"),
- primaryjoin="User.id==ReportBase.resolver_id")
+ primaryjoin="User.id==Report.resolver_id")
resolved = Column(DateTime)
result = Column(UnicodeText)
- __mapper_args__ = {'polymorphic_on': discriminator}
- def is_comment_report(self):
- return self.discriminator=='comment_report'
-
- def is_media_entry_report(self):
- return self.discriminator=='media_report'
+ object_id = Column(Integer, ForeignKey(GenericModelReference.id), nullable=True)
+ object_helper = relationship(GenericModelReference)
+ obj = association_proxy("object_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
def is_archived_report(self):
return self.resolved is not None
+ def is_comment_report(self):
+ if self.object_id is None:
+ return False
+ return isinstance(self.obj(), TextComment)
+
+ def is_media_entry_report(self):
+ if self.object_id is None:
+ return False
+ return isinstance(self.obj(), MediaEntry)
+
def archive(self,resolver_id, resolved, result):
self.resolver_id = resolver_id
self.resolved = resolved
self.result = result
-
-class CommentReport(ReportBase):
- """
- Reports that have been filed on comments.
- :keyword comment_id Holds the integer value of the reported
- comment's ID
- """
- __tablename__ = 'core__reports_on_comments'
- __mapper_args__ = {'polymorphic_identity': 'comment_report'}
-
- id = Column('id',Integer, ForeignKey('core__reports.id'),
- primary_key=True)
- comment_id = Column(Integer, ForeignKey(MediaComment.id), nullable=True)
- comment = relationship(
- MediaComment, backref=backref("reports_filed_on",
- lazy="dynamic"))
-
-
-class MediaReport(ReportBase):
- """
- Reports that have been filed on media entries
- :keyword media_entry_id Holds the integer value of the reported
- media entry's ID
- """
- __tablename__ = 'core__reports_on_media'
- __mapper_args__ = {'polymorphic_identity': 'media_report'}
-
- id = Column('id',Integer, ForeignKey('core__reports.id'),
- primary_key=True)
- media_entry_id = Column(Integer, ForeignKey(MediaEntry.id), nullable=True)
- media_entry = relationship(
- MediaEntry,
- backref=backref("reports_filed_on",
- lazy="dynamic"))
-
class UserBan(Base):
"""
Holds the information on a specific user's ban-state. As long as one of
@@ -888,13 +1473,146 @@ class PrivilegeUserAssociation(Base):
ForeignKey(Privilege.id),
primary_key=True)
+class Generator(Base):
+ """ Information about what created an activity """
+ __tablename__ = "core__generators"
+
+ id = Column(Integer, primary_key=True)
+ name = Column(Unicode, nullable=False)
+ published = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+ object_type = Column(Unicode, nullable=False)
+
+ deletion_mode = Base.SOFT_DELETE
+
+ def __repr__(self):
+ return "<{klass} {name}>".format(
+ klass=self.__class__.__name__,
+ name=self.name
+ )
+
+ def serialize(self, request):
+ href = request.urlgen(
+ "mediagoblin.api.object",
+ object_type=self.object_type,
+ id=self.id,
+ qualified=True
+ )
+ published = UTC.localize(self.published)
+ updated = UTC.localize(self.updated)
+ return {
+ "id": href,
+ "displayName": self.name,
+ "published": published.isoformat(),
+ "updated": updated.isoformat(),
+ "objectType": self.object_type,
+ }
+
+ def unserialize(self, data):
+ if "displayName" in data:
+ self.name = data["displayName"]
+
+class Activity(Base, ActivityMixin):
+ """
+ This holds all the metadata about an activity such as uploading an image,
+ posting a comment, etc.
+ """
+ __tablename__ = "core__activities"
+
+ id = Column(Integer, primary_key=True)
+ public_id = Column(Unicode, unique=True)
+ actor = Column(Integer,
+ ForeignKey("core__users.id"),
+ nullable=False)
+ published = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+
+ verb = Column(Unicode, nullable=False)
+ content = Column(Unicode, nullable=True)
+ title = Column(Unicode, nullable=True)
+ generator = Column(Integer,
+ ForeignKey("core__generators.id"),
+ nullable=True)
+
+ # Create the generic foreign keys for the object
+ object_id = Column(Integer, ForeignKey(GenericModelReference.id), nullable=False)
+ object_helper = relationship(GenericModelReference, foreign_keys=[object_id])
+ object = association_proxy("object_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+
+ # Create the generic foreign Key for the target
+ target_id = Column(Integer, ForeignKey(GenericModelReference.id), nullable=True)
+ target_helper = relationship(GenericModelReference, foreign_keys=[target_id])
+ target = association_proxy("target_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+
+ get_actor = relationship(User,
+ backref=backref("activities",
+ cascade="all, delete-orphan"))
+ get_generator = relationship(Generator)
+
+ deletion_mode = Base.SOFT_DELETE
+
+ def __repr__(self):
+ if self.content is None:
+ return "<{klass} verb:{verb}>".format(
+ klass=self.__class__.__name__,
+ verb=self.verb
+ )
+ else:
+ return "<{klass} {content}>".format(
+ klass=self.__class__.__name__,
+ content=self.content
+ )
+
+ def save(self, set_updated=True, *args, **kwargs):
+ if set_updated:
+ self.updated = datetime.datetime.now()
+ super(Activity, self).save(*args, **kwargs)
+
+class Graveyard(Base):
+ """ Where models come to die """
+ __tablename__ = "core__graveyard"
+
+ id = Column(Integer, primary_key=True)
+ public_id = Column(Unicode, nullable=True, unique=True)
+
+ deleted = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
+ object_type = Column(Unicode, nullable=False)
+
+ # This could either be a deleted actor or a real actor, this must be
+ # nullable as it we shouldn't have it set for deleted actor
+ actor_id = Column(Integer, ForeignKey(GenericModelReference.id))
+ actor_helper = relationship(GenericModelReference)
+ actor = association_proxy("actor_helper", "get_object",
+ creator=GenericModelReference.find_or_new)
+
+ def __repr__(self):
+ return "<{klass} deleted {obj_type}>".format(
+ klass=type(self).__name__,
+ obj_type=self.object_type
+ )
+
+ def serialize(self, request):
+ deleted = UTC.localize(self.deleted).isoformat()
+ context = {
+ "id": self.public_id,
+ "objectType": self.object_type,
+ "published": deleted,
+ "updated": deleted,
+ "deleted": deleted,
+ }
+
+ if self.actor_id is not None:
+ context["actor"] = self.actor().serialize(request)
+
+ return context
MODELS = [
- User, MediaEntry, Tag, MediaTag, MediaComment, Collection, CollectionItem,
- MediaFile, FileKeynames, MediaAttachmentFile, ProcessingMetaData,
- Notification, CommentNotification, ProcessingNotification, Client,
- CommentSubscription, ReportBase, CommentReport, MediaReport, UserBan,
- Privilege, PrivilegeUserAssociation,
- RequestToken, AccessToken, NonceTimestamp]
+ LocalUser, RemoteUser, User, MediaEntry, Tag, MediaTag, Comment, TextComment,
+ Collection, CollectionItem, MediaFile, FileKeynames, MediaAttachmentFile,
+ ProcessingMetaData, Notification, Client, CommentSubscription, Report,
+ UserBan, Privilege, PrivilegeUserAssociation, RequestToken, AccessToken,
+ NonceTimestamp, Activity, Generator, Location, GenericModelReference, Graveyard]
"""
Foundations are the default rows that are created immediately after the tables
@@ -945,7 +1663,7 @@ def show_table_init(engine_uri):
if __name__ == '__main__':
from sys import argv
- print repr(argv)
+ print(repr(argv))
if len(argv) == 2:
uri = argv[1]
else:
diff --git a/mediagoblin/db/open.py b/mediagoblin/db/open.py
index 4ff0945f..8f81c8d9 100644
--- a/mediagoblin/db/open.py
+++ b/mediagoblin/db/open.py
@@ -15,38 +15,117 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from sqlalchemy import create_engine, event
+from contextlib import contextmanager
import logging
-from mediagoblin.db.base import Base, Session
+import six
+from sqlalchemy import create_engine, event
+
from mediagoblin import mg_globals
+from mediagoblin.db.base import Base
_log = logging.getLogger(__name__)
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
+def set_models_as_attributes(obj):
+ """
+ Set all models as attributes on this object, for convenience
+
+ TODO: This should eventually be deprecated.
+ """
+ for k, v in six.iteritems(Base._decl_class_registry):
+ setattr(obj, k, v)
+
+
+if not DISABLE_GLOBALS:
+ from mediagoblin.db.base import Session
+
+ class DatabaseMaster(object):
+ def __init__(self, engine):
+ self.engine = engine
+
+ set_models_as_attributes(self)
+
+ def commit(self):
+ Session.commit()
-class DatabaseMaster(object):
- def __init__(self, engine):
- self.engine = engine
+ def save(self, obj):
+ Session.add(obj)
+ Session.flush()
- for k, v in Base._decl_class_registry.iteritems():
- setattr(self, k, v)
+ def check_session_clean(self):
+ for dummy in Session():
+ _log.warn("STRANGE: There are elements in the sql session. "
+ "Please report this and help us track this down.")
+ break
- def commit(self):
- Session.commit()
+ def reset_after_request(self):
+ Session.rollback()
+ Session.remove()
- def save(self, obj):
- Session.add(obj)
- Session.flush()
+ @property
+ def query(self):
+ return Session.query
- def check_session_clean(self):
- for dummy in Session():
- _log.warn("STRANGE: There are elements in the sql session. "
- "Please report this and help us track this down.")
- break
+else:
+ from sqlalchemy.orm import sessionmaker
+
+ class DatabaseManager(object):
+ """
+ Manage database connections.
+
+ The main method here is session_scope which can be used with a
+ "with" statement to get a session that is properly torn down
+ by the end of execution.
+ """
+ def __init__(self, engine):
+ self.engine = engine
+ self.Session = sessionmaker(bind=engine)
+ set_models_as_attributes(self)
+
+ @contextmanager
+ def session_scope(self):
+ """
+ This is a context manager, use like::
+
+ with dbmanager.session_scope() as request.db:
+ some_view(request)
+ """
+ session = self.Session()
+
+ #####################################
+ # Functions to emulate DatabaseMaster
+ #####################################
+ def save(obj):
+ session.add(obj)
+ session.flush()
+
+ def check_session_clean():
+ # Is this implemented right?
+ for dummy in session:
+ _log.warn("STRANGE: There are elements in the sql session. "
+ "Please report this and help us track this down.")
+ break
+
+ def reset_after_request():
+ session.rollback()
+ session.remove()
+
+ # now attach
+ session.save = save
+ session.check_session_clean = check_session_clean
+ session.reset_after_request = reset_after_request
+
+ set_models_as_attributes(session)
+ #####################################
+
+ try:
+ yield session
+ finally:
+ session.rollback()
+ session.close()
- def reset_after_request(self):
- Session.rollback()
- Session.remove()
def load_models(app_config):
@@ -75,9 +154,14 @@ def _sqlite_disable_fk_pragma_on_connect(dbapi_con, con_record):
dbapi_con.execute('pragma foreign_keys=off')
-def setup_connection_and_db_from_config(app_config, migrations=False):
+def setup_connection_and_db_from_config(app_config, migrations=False, app=None):
engine = create_engine(app_config['sql_engine'])
+ # @@: Maybe make a weak-ref so an engine can get garbage
+ # collected? Not that we expect to make a lot of MediaGoblinApp
+ # instances in a single process...
+ engine.app = app
+
# Enable foreign key checking for sqlite
if app_config['sql_engine'].startswith('sqlite://'):
if migrations:
@@ -88,9 +172,13 @@ def setup_connection_and_db_from_config(app_config, migrations=False):
# logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
- Session.configure(bind=engine)
+ if DISABLE_GLOBALS:
+ return DatabaseManager(engine)
+
+ else:
+ Session.configure(bind=engine)
- return DatabaseMaster(engine)
+ return DatabaseMaster(engine)
def check_db_migrations_current(db):
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index aba9c59c..57e6b942 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -17,10 +17,14 @@
import sys
from mediagoblin import mg_globals as mgg
-from mediagoblin.db.base import Session
from mediagoblin.db.models import MediaEntry, Tag, MediaTag, Collection
from mediagoblin.gmg_commands.dbupdate import gather_database_data
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
+if not DISABLE_GLOBALS:
+ from mediagoblin.db.base import Session
+
##########################
# Random utility functions
##########################
@@ -33,7 +37,7 @@ def atomic_update(table, query_dict, update_values):
def check_media_slug_used(uploader_id, slug, ignore_m_id):
- query = MediaEntry.query.filter_by(uploader=uploader_id, slug=slug)
+ query = MediaEntry.query.filter_by(actor=uploader_id, slug=slug)
if ignore_m_id is not None:
query = query.filter(MediaEntry.id != ignore_m_id)
does_exist = query.first() is not None
@@ -63,7 +67,7 @@ def clean_orphan_tags(commit=True):
def check_collection_slug_used(creator_id, slug, ignore_c_id):
- filt = (Collection.creator == creator_id) \
+ filt = (Collection.actor == creator_id) \
& (Collection.slug == slug)
if ignore_c_id is not None:
filt = filt & (Collection.id != ignore_c_id)
@@ -76,11 +80,16 @@ def check_db_up_to_date():
dbdatas = gather_database_data(mgg.global_config.get('plugins', {}).keys())
for dbdata in dbdatas:
- migration_manager = dbdata.make_migration_manager(Session())
- if migration_manager.database_current_migration is None or \
- migration_manager.migrations_to_run():
- sys.exit("Your database is not up to date. Please run "
- "'gmg dbupdate' before starting MediaGoblin.")
+ session = Session()
+ try:
+ migration_manager = dbdata.make_migration_manager(session)
+ if migration_manager.database_current_migration is None or \
+ migration_manager.migrations_to_run():
+ sys.exit("Your database is not up to date. Please run "
+ "'gmg dbupdate' before starting MediaGoblin.")
+ finally:
+ Session.rollback()
+ Session.remove()
if __name__ == '__main__':
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index 8515d091..daeddb3f 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -16,13 +16,15 @@
from functools import wraps
-from urlparse import urljoin
from werkzeug.exceptions import Forbidden, NotFound
from oauthlib.oauth1 import ResourceEndpoint
+from six.moves.urllib.parse import urljoin
+
from mediagoblin import mg_globals as mgg
from mediagoblin import messages
-from mediagoblin.db.models import MediaEntry, User, MediaComment
+from mediagoblin.db.models import MediaEntry, LocalUser, TextComment, \
+ AccessToken, Comment
from mediagoblin.tools.response import (
redirect, render_404,
render_user_banned, json_response)
@@ -74,7 +76,7 @@ def require_active_login(controller):
return new_controller_func
-def user_has_privilege(privilege_name):
+def user_has_privilege(privilege_name, allow_admin=True):
"""
Requires that a user have a particular privilege in order to access a page.
In order to require that a user have multiple privileges, use this
@@ -85,14 +87,17 @@ def user_has_privilege(privilege_name):
the privilege object. This object is
the name of the privilege, as assigned
in the Privilege.privilege_name column
+
+ :param allow_admin If this is true then if the user is an admin
+ it will allow the user even if the user doesn't
+ have the privilage given in privilage_name.
"""
def user_has_privilege_decorator(controller):
@wraps(controller)
@require_active_login
def wrapper(request, *args, **kwargs):
- user_id = request.user.id
- if not request.user.has_privilege(privilege_name):
+ if not request.user.has_privilege(privilege_name, allow_admin):
raise Forbidden()
return controller(request, *args, **kwargs)
@@ -102,12 +107,12 @@ def user_has_privilege(privilege_name):
def active_user_from_url(controller):
- """Retrieve User() from <user> URL pattern and pass in as url_user=...
+ """Retrieve LocalUser() from <user> URL pattern and pass in as url_user=...
Returns a 404 if no such active user has been found"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if user is None:
return render_404(request)
@@ -122,7 +127,7 @@ def user_may_delete_media(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- uploader_id = kwargs['media'].uploader
+ uploader_id = kwargs['media'].actor
if not (request.user.has_privilege(u'admin') or
request.user.id == uploader_id):
raise Forbidden()
@@ -138,7 +143,7 @@ def user_may_alter_collection(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- creator_id = request.db.User.query.filter_by(
+ creator_id = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first().id
if not (request.user.has_privilege(u'admin') or
request.user.id == creator_id):
@@ -173,7 +178,7 @@ def get_user_media_entry(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if not user:
raise NotFound()
@@ -188,7 +193,7 @@ def get_user_media_entry(controller):
media = MediaEntry.query.filter_by(
id=int(media_slug[3:]),
state=u'processed',
- uploader=user.id).first()
+ actor=user.id).first()
except ValueError:
raise NotFound()
else:
@@ -196,7 +201,7 @@ def get_user_media_entry(controller):
media = MediaEntry.query.filter_by(
slug=media_slug,
state=u'processed',
- uploader=user.id).first()
+ actor=user.id).first()
if not media:
# Didn't find anything? Okay, 404.
@@ -213,7 +218,7 @@ def get_user_collection(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = request.db.User.query.filter_by(
+ user = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first()
if not user:
@@ -221,7 +226,7 @@ def get_user_collection(controller):
collection = request.db.Collection.query.filter_by(
slug=request.matchdict['collection'],
- creator=user.id).first()
+ actor=user.id).first()
# Still no collection? Okay, 404.
if not collection:
@@ -238,7 +243,7 @@ def get_user_collection_item(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = request.db.User.query.filter_by(
+ user = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first()
if not user:
@@ -270,7 +275,7 @@ def get_media_entry_by_id(controller):
return render_404(request)
given_username = request.matchdict.get('user')
- if given_username and (given_username != media.get_uploader.username):
+ if given_username and (given_username != media.get_actor.username):
return render_404(request)
return controller(request, media=media, *args, **kwargs)
@@ -321,11 +326,11 @@ def allow_reporting(controller):
def get_optional_media_comment_by_id(controller):
"""
- Pass in a MediaComment based off of a url component. Because of this decor-
- -ator's use in filing Media or Comment Reports, it has two valid outcomes.
+ Pass in a Comment based off of a url component. Because of this decor-
+ -ator's use in filing Reports, it has two valid outcomes.
:returns The view function being wrapped with kwarg `comment` set to
- the MediaComment who's id is in the URL. If there is a
+ the Comment who's id is in the URL. If there is a
comment id in the URL and if it is valid.
:returns The view function being wrapped with kwarg `comment` set to
None. If there is no comment id in the URL.
@@ -335,8 +340,9 @@ def get_optional_media_comment_by_id(controller):
@wraps(controller)
def wrapper(request, *args, **kwargs):
if 'comment' in request.matchdict:
- comment = MediaComment.query.filter_by(
- id=request.matchdict['comment']).first()
+ comment = Comment.query.filter_by(
+ id=request.matchdict['comment']
+ ).first()
if comment is None:
return render_404(request)
@@ -369,7 +375,8 @@ def require_admin_or_moderator_login(controller):
@wraps(controller)
def new_controller_func(request, *args, **kwargs):
if request.user and \
- not request.user.has_privilege(u'admin',u'moderator'):
+ not (request.user.has_privilege(u'admin')
+ or request.user.has_privilege(u'moderator')):
raise Forbidden()
elif not request.user:
@@ -401,17 +408,24 @@ def oauth_required(controller):
request_validator = GMGRequestValidator()
resource_endpoint = ResourceEndpoint(request_validator)
- valid, request = resource_endpoint.validate_protected_resource_request(
+ valid, r = resource_endpoint.validate_protected_resource_request(
uri=request.url,
http_method=request.method,
- body=request.get_data(),
+ body=request.data,
headers=dict(request.headers),
)
if not valid:
- error = "Invalid oauth prarameter."
+ error = "Invalid oauth parameter."
return json_response({"error": error}, status=400)
+ # Fill user if not already
+ token = authorization[u"oauth_token"]
+ request.access_token = AccessToken.query.filter_by(token=token).first()
+ if request.access_token is not None and request.user is None:
+ user_id = request.access_token.actor
+ request.user = LocalUser.query.filter_by(id=user_id).first()
+
return controller(request, *args, **kwargs)
return wrapper
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index c0bece8b..83e83c3c 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -24,8 +24,20 @@ from mediagoblin.tools.metadata import DEFAULT_SCHEMA, DEFAULT_CHECKER
from mediagoblin.auth.tools import normalize_user_or_email_field
+class WebsiteField(wtforms.StringField):
+ """A field that expects a website URL but adds http:// if not provided."""
+ def process_formdata(self, valuelist):
+ if valuelist:
+ data = valuelist[0]
+ if not data.startswith((u'http://', u'https://')):
+ data = u'http://' + data
+ self.data = data
+ else:
+ super(WebsiteField, self).process_formdata(valuelist)
+
+
class EditForm(wtforms.Form):
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField(
@@ -33,12 +45,12 @@ class EditForm(wtforms.Form):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- tags = wtforms.TextField(
+ tags = wtforms.StringField(
_('Tags'),
[tag_length_validator],
description=_(
"Separate tags by commas."))
- slug = wtforms.TextField(
+ slug = wtforms.StringField(
_('Slug'),
[wtforms.validators.InputRequired(message=_("The slug can't be empty"))],
description=_(
@@ -49,6 +61,7 @@ class EditForm(wtforms.Form):
[wtforms.validators.Optional(),],
choices=licenses_as_choices())
+
class EditProfileForm(wtforms.Form):
bio = wtforms.TextAreaField(
_('Bio'),
@@ -56,10 +69,14 @@ class EditProfileForm(wtforms.Form):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- url = wtforms.TextField(
+ url = WebsiteField(
_('Website'),
[wtforms.validators.Optional(),
- wtforms.validators.URL(message=_("This address contains errors"))])
+ wtforms.validators.URL(message=_("This address contains errors"))],
+ description=_("www.example.com, http://www.example.com or "
+ "https://www.example.com"))
+
+ location = wtforms.StringField(_('Hometown'))
class EditAccountForm(wtforms.Form):
@@ -78,14 +95,14 @@ class EditAccountForm(wtforms.Form):
class EditAttachmentsForm(wtforms.Form):
- attachment_name = wtforms.TextField(
+ attachment_name = wtforms.StringField(
'Title')
attachment_file = wtforms.FileField(
'File')
class EditCollectionForm(wtforms.Form):
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500), wtforms.validators.InputRequired(message=_("The title can't be empty"))])
description = wtforms.TextAreaField(
@@ -93,7 +110,7 @@ class EditCollectionForm(wtforms.Form):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- slug = wtforms.TextField(
+ slug = wtforms.StringField(
_('Slug'),
[wtforms.validators.InputRequired(message=_("The slug can't be empty"))],
description=_(
@@ -115,7 +132,7 @@ class ChangePassForm(wtforms.Form):
class ChangeEmailForm(wtforms.Form):
- new_email = wtforms.TextField(
+ new_email = wtforms.StringField(
_('New email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
@@ -125,6 +142,7 @@ class ChangeEmailForm(wtforms.Form):
description=_(
"Enter your password to prove you own this account."))
+
class MetaDataValidator(object):
"""
Custom validator which runs form data in a MetaDataForm through a jsonschema
@@ -151,9 +169,11 @@ class MetaDataValidator(object):
raise wtforms.validators.ValidationError(
errors.pop())
+
class MetaDataForm(wtforms.Form):
- identifier = wtforms.TextField(_(u'Identifier'),[MetaDataValidator()])
- value = wtforms.TextField(_(u'Value'))
+ identifier = wtforms.StringField(_(u'Identifier'),[MetaDataValidator()])
+ value = wtforms.StringField(_(u'Value'))
+
class EditMetaDataForm(wtforms.Form):
media_metadata = wtforms.FieldList(
diff --git a/mediagoblin/edit/lib.py b/mediagoblin/edit/lib.py
index 6acebc96..3f52376a 100644
--- a/mediagoblin/edit/lib.py
+++ b/mediagoblin/edit/lib.py
@@ -17,7 +17,7 @@
def may_edit_media(request, media):
"""Check, if the request's user may edit the media details"""
- if media.uploader == request.user.id:
+ if media.actor == request.user.id:
return True
if request.user.has_privilege(u'admin'):
return True
diff --git a/mediagoblin/edit/routing.py b/mediagoblin/edit/routing.py
index a2d03d26..b349975d 100644
--- a/mediagoblin/edit/routing.py
+++ b/mediagoblin/edit/routing.py
@@ -28,3 +28,5 @@ add_route('mediagoblin.edit.verify_email', '/edit/verify_email/',
'mediagoblin.edit.views:verify_email')
add_route('mediagoblin.edit.email', '/edit/email/',
'mediagoblin.edit.views:change_email')
+add_route('mediagoblin.edit.deauthorize_applications', '/edit/deauthorize/',
+ 'mediagoblin.edit.views:deauthorize_applications')
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index e998d6be..b15fb2e7 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from datetime import datetime
from itsdangerous import BadSignature
@@ -45,7 +47,7 @@ from mediagoblin.tools.text import (
convert_to_tag_list_of_dicts, media_tags_as_string)
from mediagoblin.tools.url import slugify
from mediagoblin.db.util import check_media_slug_used, check_collection_slug_used
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser, Client, AccessToken, Location
import mimetypes
@@ -71,7 +73,7 @@ def edit_media(request, media):
# Make sure there isn't already a MediaEntry with such a slug
# and userid.
slug = slugify(form.slug.data)
- slug_used = check_media_slug_used(media.uploader, slug, media.id)
+ slug_used = check_media_slug_used(media.actor, slug, media.id)
if slug_used:
form.slug.errors.append(
@@ -82,17 +84,18 @@ def edit_media(request, media):
media.tags = convert_to_tag_list_of_dicts(
form.tags.data)
- media.license = unicode(form.license.data) or None
+ media.license = six.text_type(form.license.data) or None
media.slug = slug
media.save()
return redirect_obj(request, media)
if request.user.has_privilege(u'admin') \
- and media.uploader != request.user.id \
+ and media.actor != request.user.id \
and request.method != 'POST':
messages.add_message(
- request, messages.WARNING,
+ request,
+ messages.WARNING,
_("You are editing another user's media. Proceed with caution."))
return render_to_response(
@@ -140,7 +143,7 @@ def edit_attachments(request, media):
attachment_public_filepath \
= mg_globals.public_store.get_unique_filepath(
- ['media_entries', unicode(media.id), 'attachment',
+ ['media_entries', six.text_type(media.id), 'attachment',
public_filename])
attachment_public_file = mg_globals.public_store.get_file(
@@ -162,10 +165,11 @@ def edit_attachments(request, media):
media.save()
messages.add_message(
- request, messages.SUCCESS,
- _("You added the attachment %s!") \
- % (form.attachment_name.data
- or request.files['attachment_file'].filename))
+ request,
+ messages.SUCCESS,
+ _("You added the attachment %s!") %
+ (form.attachment_name.data or
+ request.files['attachment_file'].filename))
return redirect(request,
location=media.url_for_self(request.urlgen))
@@ -195,24 +199,41 @@ def edit_profile(request, url_user=None):
# No need to warn again if admin just submitted an edited profile
if request.method != 'POST':
messages.add_message(
- request, messages.WARNING,
+ request,
+ messages.WARNING,
_("You are editing a user's profile. Proceed with caution."))
user = url_user
+ # Get the location name
+ if user.location is None:
+ location = ""
+ else:
+ location = user.get_location.name
+
form = forms.EditProfileForm(request.form,
url=user.url,
- bio=user.bio)
+ bio=user.bio,
+ location=location)
if request.method == 'POST' and form.validate():
- user.url = unicode(form.url.data)
- user.bio = unicode(form.bio.data)
+ user.url = six.text_type(form.url.data)
+ user.bio = six.text_type(form.bio.data)
+
+ # Save location
+ if form.location.data and user.location is None:
+ user.get_location = Location(name=six.text_type(form.location.data))
+ elif form.location.data:
+ location = user.get_location
+ location.name = six.text_type(form.location.data)
+ location.save()
user.save()
- messages.add_message(request,
- messages.SUCCESS,
- _("Profile changes saved"))
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _("Profile changes saved"))
return redirect(request,
'mediagoblin.user_pages.user_home',
user=user.username)
@@ -243,9 +264,10 @@ def edit_account(request):
user.license_preference = form.license_preference.data
user.save()
- messages.add_message(request,
- messages.SUCCESS,
- _("Account settings saved"))
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _("Account settings saved"))
return redirect(request,
'mediagoblin.user_pages.user_home',
user=user.username)
@@ -256,6 +278,34 @@ def edit_account(request):
{'user': user,
'form': form})
+@require_active_login
+def deauthorize_applications(request):
+ """ Deauthroize OAuth applications """
+ if request.method == 'POST' and "application" in request.form:
+ token = request.form["application"]
+ access_token = AccessToken.query.filter_by(token=token).first()
+ if access_token is None:
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _("Unknown application, not able to deauthorize")
+ )
+ else:
+ access_token.delete()
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _("Application has been deauthorized")
+ )
+
+ access_tokens = AccessToken.query.filter_by(actor=request.user.id)
+ applications = [(a.get_requesttoken, a) for a in access_tokens]
+
+ return render_to_response(
+ request,
+ 'mediagoblin/edit/deauthorize_applications.html',
+ {'applications': applications}
+ )
@require_active_login
def delete_account(request):
@@ -269,7 +319,8 @@ def delete_account(request):
request.session.delete()
# Delete user account and all related media files etc....
- request.user.delete()
+ user = User.query.filter(User.id==user.id).first()
+ user.delete()
# We should send a message that the user has been deleted
# successfully. But we just deleted the session, so we
@@ -278,7 +329,8 @@ def delete_account(request):
else: # Did not check the confirmation box...
messages.add_message(
- request, messages.WARNING,
+ request,
+ messages.WARNING,
_('You need to confirm the deletion of your account.'))
# No POST submission or not confirmed, just show page
@@ -304,37 +356,40 @@ def edit_collection(request, collection):
if request.method == 'POST' and form.validate():
# Make sure there isn't already a Collection with such a slug
# and userid.
- slug_used = check_collection_slug_used(collection.creator,
+ slug_used = check_collection_slug_used(collection.actor,
form.slug.data, collection.id)
# Make sure there isn't already a Collection with this title
existing_collection = request.db.Collection.query.filter_by(
- creator=request.user.id,
+ actor=request.user.id,
title=form.title.data).first()
if existing_collection and existing_collection.id != collection.id:
messages.add_message(
- request, messages.ERROR,
- _('You already have a collection called "%s"!') % \
+ request,
+ messages.ERROR,
+ _('You already have a collection called "%s"!') %
form.title.data)
elif slug_used:
form.slug.errors.append(
_(u'A collection with that slug already exists for this user.'))
else:
- collection.title = unicode(form.title.data)
- collection.description = unicode(form.description.data)
- collection.slug = unicode(form.slug.data)
+ collection.title = six.text_type(form.title.data)
+ collection.description = six.text_type(form.description.data)
+ collection.slug = six.text_type(form.slug.data)
collection.save()
return redirect_obj(request, collection)
if request.user.has_privilege(u'admin') \
- and collection.creator != request.user.id \
+ and collection.actor != request.user.id \
and request.method != 'POST':
messages.add_message(
- request, messages.WARNING,
- _("You are editing another user's collection. Proceed with caution."))
+ request,
+ messages.WARNING,
+ _("You are editing another user's collection. "
+ "Proceed with caution."))
return render_to_response(
request,
@@ -388,6 +443,7 @@ def verify_email(request):
user=user.username)
+@require_active_login
def change_email(request):
""" View to change the user's email """
form = forms.ChangeEmailForm(request.form)
@@ -399,8 +455,9 @@ def change_email(request):
if request.method == 'POST' and form.validate():
new_email = form.new_email.data
- users_with_email = User.query.filter_by(
- email=new_email).count()
+ users_with_email = User.query.filter(
+ LocalUser.email==new_email
+ ).count()
if users_with_email:
form.new_email.errors.append(
@@ -450,10 +507,10 @@ def edit_metadata(request, media):
json_ld_metadata = compact_and_validate(metadata_dict)
media.media_metadata = json_ld_metadata
media.save()
- return redirect_obj(request, media)
+ return redirect_obj(request, media)
if len(form.media_metadata) == 0:
- for identifier, value in media.media_metadata.iteritems():
+ for identifier, value in six.iteritems(media.media_metadata):
if identifier == "@context": continue
form.media_metadata.append_entry({
'identifier':identifier,
diff --git a/mediagoblin/errormiddleware.py b/mediagoblin/errormiddleware.py
index c6789f32..da729d14 100644
--- a/mediagoblin/errormiddleware.py
+++ b/mediagoblin/errormiddleware.py
@@ -14,8 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from paste.exceptions.errormiddleware import make_error_middleware
-
MGOBLIN_ERROR_MESSAGE = """\
<div style="text-align:center;font-family: monospace">
<h1>YEOWCH... that's an error!</h1>
@@ -56,5 +54,11 @@ def mgoblin_error_middleware(app, global_conf, **kw):
It should take all of Paste's default options, so see:
http://pythonpaste.org/modules/exceptions.html
"""
+ # No paste? Fail in a friendly way!
+ try:
+ from paste.exceptions.errormiddleware import make_error_middleware
+ except ImportError:
+ return app
+
kw['error_message'] = MGOBLIN_ERROR_MESSAGE
return make_error_middleware(app, global_conf, **kw)
diff --git a/mediagoblin/gmg_commands/__init__.py b/mediagoblin/gmg_commands/__init__.py
index 0cb239a2..98b097a6 100644
--- a/mediagoblin/gmg_commands/__init__.py
+++ b/mediagoblin/gmg_commands/__init__.py
@@ -16,9 +16,16 @@
import argparse
import os
+import shutil
+
+import six
from mediagoblin.tools.common import import_component
+import logging
+_log = logging.getLogger(__name__)
+logging.basicConfig()
+
SUBCOMMAND_MAP = {
'shell': {
@@ -61,29 +68,25 @@ SUBCOMMAND_MAP = {
'setup': 'mediagoblin.gmg_commands.deletemedia:parser_setup',
'func': 'mediagoblin.gmg_commands.deletemedia:deletemedia',
'help': 'Delete media entries'},
+ 'serve': {
+ 'setup': 'mediagoblin.gmg_commands.serve:parser_setup',
+ 'func': 'mediagoblin.gmg_commands.serve:serve',
+ 'help': 'PasteScript replacement'},
'batchaddmedia': {
'setup': 'mediagoblin.gmg_commands.batchaddmedia:parser_setup',
'func': 'mediagoblin.gmg_commands.batchaddmedia:batchaddmedia',
'help': 'Add many media entries at once'},
+ 'alembic': {
+ 'setup': 'mediagoblin.gmg_commands.alembic_commands:parser_setup',
+ 'func': 'mediagoblin.gmg_commands.alembic_commands:raw_alembic_cli',
+ 'help': (
+ 'Run raw alembic commands with our local database. '
+ '(Unless you know what you\'re doing, use dbupdate instead!)')},
# 'theme': {
# 'setup': 'mediagoblin.gmg_commands.theme:theme_parser_setup',
# 'func': 'mediagoblin.gmg_commands.theme:theme',
# 'help': 'Theming commands',
# }
-
- ## These might be useful, mayyyybe, but don't really work anymore
- ## due to mongo change and the "versatility" of sql options.
- ##
- ## For now, commenting out. Might re-enable soonish?
- #
- # 'env_export': {
- # 'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
- # 'func': 'mediagoblin.gmg_commands.import_export:env_export',
- # 'help': 'Exports the data for this MediaGoblin instance'},
- # 'env_import': {
- # 'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
- # 'func': 'mediagoblin.gmg_commands.import_export:env_import',
- # 'help': 'Imports the data for this MediaGoblin instance'},
}
@@ -98,7 +101,7 @@ def main_cli():
"otherwise mediagoblin.ini"))
subparsers = parser.add_subparsers(help='sub-command help')
- for command_name, command_struct in SUBCOMMAND_MAP.iteritems():
+ for command_name, command_struct in six.iteritems(SUBCOMMAND_MAP):
if 'help' in command_struct:
subparser = subparsers.add_parser(
command_name, help=command_struct['help'])
@@ -121,6 +124,27 @@ def main_cli():
else:
args.conf_file = 'mediagoblin.ini'
+ # This is a hopefully TEMPORARY hack for adding a mediagoblin.ini
+ # if none exists, to make up for a deficiency as we are migrating
+ # our docs to the new "no mediagoblin.ini by default" workflow.
+ # Normally, the docs should provide instructions for this, but
+ # since 0.7.1 docs say "install from master!" and yet we removed
+ # mediagoblin.ini, we need to cover our bases...
+
+ parent_directory = os.path.split(os.path.abspath(args.conf_file))[0]
+ if os.path.split(args.conf_file)[1] == 'mediagoblin.ini' \
+ and not os.path.exists(args.conf_file) \
+ and os.path.exists(
+ os.path.join(
+ parent_directory, 'mediagoblin.example.ini')):
+ # Do the copy-over of the mediagoblin config for the user
+ _log.warning(
+ "No mediagoblin.ini found and no other path given, "
+ "so making one for you.")
+ shutil.copy(
+ os.path.join(parent_directory, "mediagoblin.example.ini"),
+ os.path.join(parent_directory, "mediagoblin.ini"))
+
args.func(args)
diff --git a/mediagoblin/gmg_commands/addmedia.py b/mediagoblin/gmg_commands/addmedia.py
index 2f095760..babc6ed7 100644
--- a/mediagoblin/gmg_commands/addmedia.py
+++ b/mediagoblin/gmg_commands/addmedia.py
@@ -14,8 +14,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
+
import os
+import six
+
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin.submit.lib import (
submit_media, get_upload_file_limits,
@@ -71,41 +76,41 @@ def addmedia(args):
app = commands_util.setup_app(args)
# get the user
- user = app.db.User.query.filter_by(username=args.username.lower()).first()
+ user = app.db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user is None:
- print "Sorry, no user by username '%s'" % args.username
+ print("Sorry, no user by username '%s'" % args.username)
return
-
+
# check for the file, if it exists...
filename = os.path.split(args.filename)[-1]
abs_filename = os.path.abspath(args.filename)
if not os.path.exists(abs_filename):
- print "Can't find a file with filename '%s'" % args.filename
+ print("Can't find a file with filename '%s'" % args.filename)
return
- upload_limit, max_file_size = get_upload_file_limits(user)
-
def maybe_unicodeify(some_string):
# this is kinda terrible
if some_string is None:
return None
- else:
- return unicode(some_string)
+ if six.PY2:
+ return six.text_type(some_string, 'utf-8')
+ return some_string
try:
submit_media(
mg_app=app,
user=user,
- submitted_file=file(abs_filename, 'r'), filename=filename,
+ submitted_file=open(abs_filename, 'rb'), filename=filename,
title=maybe_unicodeify(args.title),
description=maybe_unicodeify(args.description),
collection_slug=args.collection_slug,
license=maybe_unicodeify(args.license),
- tags_string=maybe_unicodeify(args.tags) or u"",
- upload_limit=upload_limit, max_file_size=max_file_size)
+ tags_string=maybe_unicodeify(args.tags) or u"")
except FileUploadLimit:
- print "This file is larger than the upload limits for this site."
+ print("This file is larger than the upload limits for this site.")
except UserUploadLimit:
- print "This file will put this user past their upload limits."
+ print("This file will put this user past their upload limits.")
except UserPastUploadLimit:
- print "This user is already past their upload limits."
+ print("This user is already past their upload limits.")
diff --git a/mediagoblin/gmg_commands/alembic_commands.py b/mediagoblin/gmg_commands/alembic_commands.py
new file mode 100644
index 00000000..4e73ec13
--- /dev/null
+++ b/mediagoblin/gmg_commands/alembic_commands.py
@@ -0,0 +1,71 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import argparse
+
+from alembic import config
+from sqlalchemy.orm import sessionmaker
+
+from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.init import setup_global_and_app_config
+from mediagoblin.db.migration_tools import build_alembic_config
+from mediagoblin.tools.common import import_component
+
+
+class FudgedCommandLine(config.CommandLine):
+ def main(self, args, db, global_config):
+ options = self.parser.parse_args(args.args_for_alembic)
+
+ # This is useful for people running commands involving plugins, such
+ # as building autogenerated revisions.
+ if args.with_plugins:
+ plugins = global_config.get('plugins', {}).keys()
+ for plugin in plugins:
+ try:
+ import_component('{0}.models:MODELS'.format(plugin))
+ except ImportError:
+ # It doesn't really matter if there's no models to import
+ # here.
+ pass
+
+ # This code is inspired by a hack in Alembic, but isn't the same really.
+ # Regardless, Alembic is Expat licensed.
+ if not hasattr(options, "cmd"):
+ print(
+ "* Only use this command if you know what you are doing! *\n"
+ "If not, use the 'gmg dbupdate' command instead.\n\n"
+ "(You can also pass --with-plugins here.)"
+ "Alembic help:\n")
+ self.parser.print_help()
+ return
+ else:
+ Session = sessionmaker(bind=db.engine)
+ session = Session()
+
+ cfg = build_alembic_config(global_config, options, session)
+
+ self.run_cmd(cfg, options)
+
+def parser_setup(subparser):
+ subparser.add_argument(
+ "--with-plugins", action="store_true",
+ help="Import all plugins' models before running alembic commands.")
+ subparser.add_argument("args_for_alembic", nargs=argparse.REMAINDER)
+
+def raw_alembic_cli(args):
+ global_config, app_config = setup_global_and_app_config(args.conf_file)
+ db = setup_connection_and_db_from_config(app_config, migrations=False)
+ FudgedCommandLine().main(args, db, global_config)
diff --git a/mediagoblin/gmg_commands/batchaddmedia.py b/mediagoblin/gmg_commands/batchaddmedia.py
index 4931bda2..274d72bc 100644
--- a/mediagoblin/gmg_commands/batchaddmedia.py
+++ b/mediagoblin/gmg_commands/batchaddmedia.py
@@ -14,11 +14,18 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import os
-import requests, codecs
+from __future__ import print_function
+
+import codecs
import csv
-from urlparse import urlparse
+import os
+import requests
+import six
+
+from six.moves.urllib.parse import urlparse
+
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin.submit.lib import (
submit_media, get_upload_file_limits,
@@ -58,13 +65,14 @@ def batchaddmedia(args):
files_uploaded, files_attempted = 0, 0
# get the user
- user = app.db.User.query.filter_by(username=args.username.lower()).first()
+ user = app.db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user is None:
- print _(u"Sorry, no user by username '{username}' exists".format(
- username=args.username))
+ print(_(u"Sorry, no user by username '{username}' exists".format(
+ username=args.username)))
return
- upload_limit, max_file_size = get_upload_file_limits(user)
temp_files = []
if os.path.isfile(args.metadata_path):
@@ -73,19 +81,18 @@ def batchaddmedia(args):
else:
error = _(u'File at {path} not found, use -h flag for help'.format(
path=args.metadata_path))
- print error
+ print(error)
return
abs_metadata_filename = os.path.abspath(metadata_path)
abs_metadata_dir = os.path.dirname(abs_metadata_filename)
- upload_limit, max_file_size = get_upload_file_limits(user)
def maybe_unicodeify(some_string):
# this is kinda terrible
if some_string is None:
return None
else:
- return unicode(some_string)
+ return six.text_type(some_string)
with codecs.open(
abs_metadata_filename, 'r', encoding='utf-8') as all_metadata:
@@ -110,13 +117,13 @@ def batchaddmedia(args):
license = file_metadata.get('license')
try:
json_ld_metadata = compact_and_validate(file_metadata)
- except ValidationError, exc:
+ except ValidationError as exc:
error = _(u"""Error with media '{media_id}' value '{error_path}': {error_msg}
Metadata was not uploaded.""".format(
media_id=media_id,
error_path=exc.path[0],
error_msg=exc.message))
- print error
+ print(error)
continue
url = urlparse(original_location)
@@ -136,9 +143,9 @@ Metadata was not uploaded.""".format(
try:
media_file = file(file_abs_path, 'r')
except IOError:
- print _(u"""\
+ print(_(u"""\
FAIL: Local file {filename} could not be accessed.
-{filename} will not be uploaded.""".format(filename=filename))
+{filename} will not be uploaded.""".format(filename=filename)))
continue
try:
submit_media(
@@ -150,33 +157,33 @@ FAIL: Local file {filename} could not be accessed.
description=maybe_unicodeify(description),
license=maybe_unicodeify(license),
metadata=json_ld_metadata,
- tags_string=u"",
- upload_limit=upload_limit, max_file_size=max_file_size)
- print _(u"""Successfully submitted {filename}!
+ tags_string=u"")
+ print(_(u"""Successfully submitted {filename}!
Be sure to look at the Media Processing Panel on your website to be sure it
-uploaded successfully.""".format(filename=filename))
+uploaded successfully.""".format(filename=filename)))
files_uploaded += 1
except FileUploadLimit:
- print _(
-u"FAIL: This file is larger than the upload limits for this site.")
+ print(_(
+u"FAIL: This file is larger than the upload limits for this site."))
except UserUploadLimit:
- print _(
-"FAIL: This file will put this user past their upload limits.")
+ print(_(
+"FAIL: This file will put this user past their upload limits."))
except UserPastUploadLimit:
- print _("FAIL: This user is already past their upload limits.")
- print _(
+ print(_("FAIL: This user is already past their upload limits."))
+ print(_(
"{files_uploaded} out of {files_attempted} files successfully submitted".format(
files_uploaded=files_uploaded,
- files_attempted=files_attempted))
+ files_attempted=files_attempted)))
def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
# csv.py doesn't do Unicode; encode temporarily as UTF-8:
+ # TODO: this probably won't be necessary in Python 3
csv_reader = csv.reader(utf_8_encoder(unicode_csv_data),
dialect=dialect, **kwargs)
for row in csv_reader:
# decode UTF-8 back to Unicode, cell by cell:
- yield [unicode(cell, 'utf-8') for cell in row]
+ yield [six.text_type(cell, 'utf-8') for cell in row]
def utf_8_encoder(unicode_csv_data):
for line in unicode_csv_data:
@@ -203,4 +210,3 @@ def parse_csv_file(file_contents):
objects_dict[media_id] = (line_dict)
return objects_dict
-
diff --git a/mediagoblin/gmg_commands/dbupdate.py b/mediagoblin/gmg_commands/dbupdate.py
index 27283a20..bafe76bb 100644
--- a/mediagoblin/gmg_commands/dbupdate.py
+++ b/mediagoblin/gmg_commands/dbupdate.py
@@ -16,10 +16,13 @@
import logging
+import six
+from alembic import command
from sqlalchemy.orm import sessionmaker
from mediagoblin.db.open import setup_connection_and_db_from_config
-from mediagoblin.db.migration_tools import MigrationManager
+from mediagoblin.db.migration_tools import (
+ MigrationManager, build_alembic_config, populate_table_foundations)
from mediagoblin.init import setup_global_and_app_config
from mediagoblin.tools.common import import_component
@@ -34,19 +37,20 @@ def dbupdate_parse_setup(subparser):
class DatabaseData(object):
- def __init__(self, name, models, foundations, migrations):
+ def __init__(self, name, models, migrations):
self.name = name
self.models = models
- self.foundations = foundations
self.migrations = migrations
def make_migration_manager(self, session):
return MigrationManager(
- self.name, self.models, self.foundations, self.migrations, session)
+ self.name, self.models, self.migrations, session)
def gather_database_data(plugins):
"""
+ Gather all database data relevant to the extensions installed.
+
Gather all database data relevant to the extensions we have
installed so we can do migrations and table initialization.
@@ -57,11 +61,10 @@ def gather_database_data(plugins):
# Add main first
from mediagoblin.db.models import MODELS as MAIN_MODELS
from mediagoblin.db.migrations import MIGRATIONS as MAIN_MIGRATIONS
- from mediagoblin.db.models import FOUNDATIONS as MAIN_FOUNDATIONS
managed_dbdata.append(
DatabaseData(
- u'__main__', MAIN_MODELS, MAIN_FOUNDATIONS, MAIN_MIGRATIONS))
+ u'__main__', MAIN_MODELS, MAIN_MIGRATIONS))
for plugin in plugins:
try:
@@ -73,8 +76,8 @@ def gather_database_data(plugins):
models = []
except AttributeError as exc:
- _log.warning('Could not find MODELS in {0}.models, have you \
-forgotten to add it? ({1})'.format(plugin, exc))
+ _log.warning('Could not find MODELS in {0}.models, have you '
+ 'forgotten to add it? ({1})'.format(plugin, exc))
models = []
try:
@@ -87,23 +90,50 @@ forgotten to add it? ({1})'.format(plugin, exc))
migrations = {}
except AttributeError as exc:
- _log.debug('Could not find MIGRATIONS in {0}.migrations, have you \
-forgotten to add it? ({1})'.format(plugin, exc))
+ _log.debug('Could not find MIGRATIONS in {0}.migrations, have you'
+ 'forgotten to add it? ({1})'.format(plugin, exc))
migrations = {}
+ if models:
+ managed_dbdata.append(
+ DatabaseData(plugin, models, migrations))
+
+ return managed_dbdata
+
+
+def run_foundations(db, global_config):
+ """
+ Gather foundations data and run it.
+ """
+ from mediagoblin.db.models import FOUNDATIONS as MAIN_FOUNDATIONS
+ all_foundations = [(u"__main__", MAIN_FOUNDATIONS)]
+
+ Session = sessionmaker(bind=db.engine)
+ session = Session()
+
+ plugins = global_config.get('plugins', {})
+
+ for plugin in plugins:
try:
- foundations = import_component('{0}.models:FOUNDATIONS'.format(plugin))
+ foundations = import_component(
+ '{0}.models:FOUNDATIONS'.format(plugin))
+ all_foundations.append((plugin, foundations))
except ImportError as exc:
- foundations = {}
+ continue
except AttributeError as exc:
- foundations = {}
+ continue
- if models:
- managed_dbdata.append(
- DatabaseData(plugin, models, foundations, migrations))
+ for name, foundations in all_foundations:
+ populate_table_foundations(session, foundations, name)
- return managed_dbdata
+def run_alembic_migrations(db, app_config, global_config):
+ """Initialize a database and runs all Alembic migrations."""
+ Session = sessionmaker(bind=db.engine)
+ session = Session()
+ cfg = build_alembic_config(global_config, None, session)
+
+ return command.upgrade(cfg, 'heads')
def run_dbupdate(app_config, global_config):
@@ -113,15 +143,36 @@ def run_dbupdate(app_config, global_config):
Will also initialize or migrate all extensions (media types, and
in the future, plugins)
"""
-
# Set up the database
db = setup_connection_and_db_from_config(app_config, migrations=True)
- #Run the migrations
- run_all_migrations(db, app_config, global_config)
+
+ # Do we have migrations
+ should_run_sqam_migrations = db.engine.has_table("core__migrations") and \
+ sqam_migrations_to_run(db, app_config,
+ global_config)
+
+ # Looks like a fresh database!
+ # (We set up this variable here because doing "run_all_migrations" below
+ # will change things.)
+ fresh_database = (
+ not db.engine.has_table("core__migrations") and
+ not db.engine.has_table("alembic_version"))
+
+ # Run the migrations
+ if should_run_sqam_migrations:
+ run_all_migrations(db, app_config, global_config)
+
+ run_alembic_migrations(db, app_config, global_config)
+
+ # If this was our first time initializing the database,
+ # we must lay down the foundations
+ if fresh_database:
+ run_foundations(db, global_config)
def run_all_migrations(db, app_config, global_config):
- """
+ """Initialize or migrates a database.
+
Initializes or migrates a database that already has a
connection setup and also initializes or migrates all
extensions based on the config files.
@@ -131,7 +182,7 @@ def run_all_migrations(db, app_config, global_config):
"""
# Gather information from all media managers / projects
dbdatas = gather_database_data(
- global_config.get('plugins', {}).keys())
+ list(global_config.get('plugins', {}).keys()))
Session = sessionmaker(bind=db.engine)
@@ -142,6 +193,42 @@ def run_all_migrations(db, app_config, global_config):
migration_manager.init_or_migrate()
+def sqam_migrations_to_run(db, app_config, global_config):
+ """
+ Check whether any plugins have sqlalchemy-migrate migrations left to run.
+
+ This is a kludge so we can transition away from sqlalchemy-migrate
+ except where necessary.
+ """
+ # @@: This shares a lot of code with run_all_migrations, but both
+ # are legacy and will be removed at some point.
+
+ # Gather information from all media managers / projects
+ dbdatas = gather_database_data(
+ list(global_config.get('plugins', {}).keys()))
+
+ Session = sessionmaker(bind=db.engine)
+
+ # We can bail out early if it turns out that sqlalchemy-migrate
+ # was never installed with any migrations
+ from mediagoblin.db.models import MigrationData
+ if Session().query(MigrationData).filter_by(
+ name=u"__main__").first() is None:
+ return False
+
+ # Setup media managers for all dbdata, run init/migrate and print info
+ # For each component, create/migrate tables
+ for dbdata in dbdatas:
+ migration_manager = dbdata.make_migration_manager(Session())
+ if migration_manager.migrations_to_run():
+ # If *any* migration managers have migrations to run,
+ # we'll have to run them.
+ return True
+
+ # Otherwise, scot free!
+ return False
+
+
def dbupdate(args):
global_config, app_config = setup_global_and_app_config(args.conf_file)
run_dbupdate(app_config, global_config)
diff --git a/mediagoblin/gmg_commands/deletemedia.py b/mediagoblin/gmg_commands/deletemedia.py
index ab5a81f6..bf50abde 100644
--- a/mediagoblin/gmg_commands/deletemedia.py
+++ b/mediagoblin/gmg_commands/deletemedia.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
import sys
from mediagoblin.gmg_commands import util as commands_util
@@ -29,7 +30,7 @@ def deletemedia(args):
media_ids = set([int(mid) for mid in args.media_ids.split(',') if mid.isdigit()])
if not media_ids:
- print 'Can\'t find any valid media ID(s).'
+ print('Can\'t find any valid media ID(s).')
sys.exit(1)
found_medias = set()
filter_ids = app.db.MediaEntry.id.in_(media_ids)
@@ -37,8 +38,8 @@ def deletemedia(args):
for media in medias:
found_medias.add(media.id)
media.delete()
- print 'Media ID %d has been deleted.' % media.id
+ print('Media ID %d has been deleted.' % media.id)
for media in media_ids - found_medias:
- print 'Can\'t find a media with ID %d.' % media
- print 'Done.'
+ print('Can\'t find a media with ID %d.' % media)
+ print('Done.')
sys.exit(0)
diff --git a/mediagoblin/gmg_commands/import_export.py b/mediagoblin/gmg_commands/import_export.py
deleted file mode 100644
index fbac09f6..00000000
--- a/mediagoblin/gmg_commands/import_export.py
+++ /dev/null
@@ -1,256 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-from mediagoblin import mg_globals
-from mediagoblin.db.open import setup_connection_and_db_from_config
-from mediagoblin.gmg_commands import util as commands_util
-from mediagoblin.storage.filestorage import BasicFileStorage
-from mediagoblin.init import setup_storage, setup_global_and_app_config
-
-import shutil
-import tarfile
-import tempfile
-import subprocess
-import os.path
-import os
-import sys
-import logging
-from contextlib import closing
-
-_log = logging.getLogger('gmg.import_export')
-logging.basicConfig()
-_log.setLevel(logging.INFO)
-
-
-def import_export_parse_setup(subparser):
- # TODO: Add default
- subparser.add_argument(
- 'tar_file')
- subparser.add_argument(
- '--mongodump_path', default='mongodump',
- help='mongodump binary')
- subparser.add_argument(
- '--mongorestore_path', default='mongorestore',
- help='mongorestore binary')
- subparser.add_argument(
- '--cache_path',
- help='Temporary directory where files will be temporarily dumped')
-
-
-def _import_media(db, args):
- '''
- Import media files
-
- Must be called after _import_database()
- '''
- _log.info('-> Importing media...')
-
- media_cache = BasicFileStorage(
- args._cache_path['media'])
-
- # TODO: Add import of queue files
- queue_cache = BasicFileStorage(args._cache_path['queue'])
-
- for entry in db.MediaEntry.query.filter_by():
- for name, path in entry.media_files.items():
- _log.info('Importing: {0} - {1}'.format(
- entry.title.encode('ascii', 'replace'),
- name))
-
- media_file = mg_globals.public_store.get_file(path, mode='wb')
- media_file.write(
- media_cache.get_file(path, mode='rb').read())
-
- _log.info('...Media imported')
-
-
-def _import_database(db, args):
- '''
- Restore mongo database from ___.bson files
- '''
- _log.info('-> Importing database...')
-
- p = subprocess.Popen([
- args.mongorestore_path,
- '-d', db.name,
- os.path.join(args._cache_path['database'], db.name)])
-
- p.wait()
-
- _log.info('...Database imported')
-
-
-def env_import(args):
- '''
- Restore mongo database and media files from a tar archive
- '''
- if not args.cache_path:
- args.cache_path = tempfile.mkdtemp()
-
- setup_global_and_app_config(args.conf_file)
-
- # Creates mg_globals.public_store and mg_globals.queue_store
- setup_storage()
-
- global_config, app_config = setup_global_and_app_config(args.conf_file)
- db = setup_connection_and_db_from_config(
- app_config)
-
- tf = tarfile.open(
- args.tar_file,
- mode='r|gz')
-
- tf.extractall(args.cache_path)
-
- args.cache_path = os.path.join(
- args.cache_path, 'mediagoblin-data')
- args = _setup_paths(args)
-
- # Import database from extracted data
- _import_database(db, args)
-
- _import_media(db, args)
-
- _clean(args)
-
-
-def _setup_paths(args):
- '''
- Populate ``args`` variable with cache subpaths
- '''
- args._cache_path = dict()
- PATH_MAP = {
- 'media': 'media',
- 'queue': 'queue',
- 'database': 'database'}
-
- for key, val in PATH_MAP.items():
- args._cache_path[key] = os.path.join(args.cache_path, val)
-
- return args
-
-
-def _create_archive(args):
- '''
- Create the tar archive
- '''
- _log.info('-> Compressing to archive')
-
- tf = tarfile.open(
- args.tar_file,
- mode='w|gz')
-
- with closing(tf):
- tf.add(args.cache_path, 'mediagoblin-data/')
-
- _log.info('...Archiving done')
-
-
-def _clean(args):
- '''
- Remove cache directory
- '''
- shutil.rmtree(args.cache_path)
-
-
-def _export_check(args):
- '''
- Run security checks for export command
- '''
- if os.path.exists(args.tar_file):
- overwrite = raw_input(
- 'The output file already exists. '
- 'Are you **SURE** you want to overwrite it? '
- '(yes/no)> ')
- if not overwrite == 'yes':
- print 'Aborting.'
-
- return False
-
- return True
-
-
-def _export_database(db, args):
- _log.info('-> Exporting database...')
-
- p = subprocess.Popen([
- args.mongodump_path,
- '-d', db.name,
- '-o', args._cache_path['database']])
-
- p.wait()
-
- _log.info('...Database exported')
-
-
-def _export_media(db, args):
- _log.info('-> Exporting media...')
-
- media_cache = BasicFileStorage(
- args._cache_path['media'])
-
- # TODO: Add export of queue files
- queue_cache = BasicFileStorage(args._cache_path['queue'])
-
- for entry in db.MediaEntry.query.filter_by():
- for name, path in entry.media_files.items():
- _log.info(u'Exporting {0} - {1}'.format(
- entry.title,
- name))
- try:
- mc_file = media_cache.get_file(path, mode='wb')
- mc_file.write(
- mg_globals.public_store.get_file(path, mode='rb').read())
- except Exception as e:
- _log.error('Failed: {0}'.format(e))
-
- _log.info('...Media exported')
-
-
-def env_export(args):
- '''
- Export database and media files to a tar archive
- '''
- commands_util.check_unrecognized_args(args)
- if args.cache_path:
- if os.path.exists(args.cache_path):
- _log.error('The cache directory must not exist '
- 'before you run this script')
- _log.error('Cache directory: {0}'.format(args.cache_path))
-
- return False
- else:
- args.cache_path = tempfile.mkdtemp()
-
- args = _setup_paths(args)
-
- if not _export_check(args):
- _log.error('Checks did not pass, exiting')
- sys.exit(0)
-
- globa_config, app_config = setup_global_and_app_config(args.conf_file)
-
- setup_storage()
-
- db = setup_connection_and_db_from_config(app_config)
-
- _export_database(db, args)
-
- _export_media(db, args)
-
- _create_archive(args)
-
- _clean(args)
diff --git a/mediagoblin/gmg_commands/reprocess.py b/mediagoblin/gmg_commands/reprocess.py
index e2f19ea3..85cae6df 100644
--- a/mediagoblin/gmg_commands/reprocess.py
+++ b/mediagoblin/gmg_commands/reprocess.py
@@ -13,6 +13,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
import argparse
import os
@@ -143,7 +146,7 @@ def available(args):
manager = get_processing_manager_for_type(media_type)
except ProcessingManagerDoesNotExist:
entry = MediaEntry.query.filter_by(id=args.id_or_type).first()
- print 'No such processing manager for {0}'.format(entry.media_type)
+ print('No such processing manager for {0}'.format(entry.media_type))
if args.state:
processors = manager.list_all_processors_by_state(args.state)
@@ -152,25 +155,25 @@ def available(args):
else:
processors = manager.list_eligible_processors(media_entry)
- print "Available processors:"
- print "====================="
- print ""
+ print("Available processors:")
+ print("=====================")
+ print("")
if args.action_help:
for processor in processors:
- print processor.name
- print "-" * len(processor.name)
+ print(processor.name)
+ print("-" * len(processor.name))
parser = processor.generate_parser()
parser.print_help()
- print ""
+ print("")
else:
for processor in processors:
if processor.description:
- print " - %s: %s" % (processor.name, processor.description)
+ print(" - %s: %s" % (processor.name, processor.description))
else:
- print " - %s" % processor.name
+ print(" - %s" % processor.name)
def run(args, media_id=None):
@@ -185,12 +188,12 @@ def run(args, media_id=None):
processor_class = manager.get_processor(
args.reprocess_command, media_entry)
except ProcessorDoesNotExist:
- print 'No such processor "%s" for media with id "%s"' % (
- args.reprocess_command, media_entry.id)
+ print('No such processor "%s" for media with id "%s"' % (
+ args.reprocess_command, media_entry.id))
return
except ProcessorNotEligible:
- print 'Processor "%s" exists but media "%s" is not eligible' % (
- args.reprocess_command, media_entry.id)
+ print('Processor "%s" exists but media "%s" is not eligible' % (
+ args.reprocess_command, media_entry.id))
return
reprocess_parser = processor_class.generate_parser()
@@ -203,7 +206,7 @@ def run(args, media_id=None):
except ProcessingManagerDoesNotExist:
entry = MediaEntry.query.filter_by(id=media_id).first()
- print 'No such processing manager for {0}'.format(entry.media_type)
+ print('No such processing manager for {0}'.format(entry.media_type))
def bulk_run(args):
@@ -233,12 +236,12 @@ def thumbs(args):
processor_class = manager.get_processor(
'resize', media_entry)
except ProcessorDoesNotExist:
- print 'No such processor "%s" for media with id "%s"' % (
- 'resize', media_entry.id)
+ print('No such processor "%s" for media with id "%s"' % (
+ 'resize', media_entry.id))
return
except ProcessorNotEligible:
- print 'Processor "%s" exists but media "%s" is not eligible' % (
- 'resize', media_entry.id)
+ print('Processor "%s" exists but media "%s" is not eligible' % (
+ 'resize', media_entry.id))
return
reprocess_parser = processor_class.generate_parser()
@@ -260,7 +263,7 @@ def thumbs(args):
reprocess_info=reprocess_request)
except ProcessingManagerDoesNotExist:
- print 'No such processing manager for {0}'.format(entry.media_type)
+ print('No such processing manager for {0}'.format(entry.media_type))
def initial(args):
@@ -276,7 +279,7 @@ def initial(args):
media_entry,
reprocess_action='initial')
except ProcessingManagerDoesNotExist:
- print 'No such processing manager for {0}'.format(entry.media_type)
+ print('No such processing manager for {0}'.format(entry.media_type))
def reprocess(args):
diff --git a/mediagoblin/gmg_commands/serve.py b/mediagoblin/gmg_commands/serve.py
new file mode 100644
index 00000000..6ded1cfc
--- /dev/null
+++ b/mediagoblin/gmg_commands/serve.py
@@ -0,0 +1,65 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
+from paste.deploy import loadapp, loadserver
+
+
+class ServeCommand(object):
+
+ def loadserver(self, server_spec, name, relative_to, **kwargs):
+ return loadserver(server_spec, name=name, relative_to=relative_to,
+ **kwargs)
+
+ def loadapp(self, app_spec, name, relative_to, **kwargs):
+ return loadapp(app_spec, name=name, relative_to=relative_to, **kwargs)
+
+ def daemonize(self):
+ pass
+
+ def restart_with_reloader(self):
+ pass
+
+ def restart_with_monitor(self, reloader=False):
+ pass
+
+ def run(self):
+ print('Running...')
+
+
+def parser_setup(subparser):
+ subparser.add_argument('config', metavar='CONFIG_FILE')
+ subparser.add_argument('command',
+ choices=['start', 'stop', 'restart', 'status'],
+ nargs='?', default='start')
+ subparser.add_argument('-n', '--app-name',
+ dest='app_name',
+ metavar='NAME',
+ help="Load the named application (default main)")
+ subparser.add_argument('-s', '--server',
+ dest='server',
+ metavar='SERVER_TYPE',
+ help="Use the named server.")
+ subparser.add_argument('--reload',
+ dest='reload',
+ action='store_true',
+ help="Use auto-restart file monitor")
+
+
+def serve(args):
+ serve_cmd = ServeCommand() # TODO: pass args to it
+ serve_cmd.run()
diff --git a/mediagoblin/gmg_commands/shell.py b/mediagoblin/gmg_commands/shell.py
index 4998acd7..4d3ec241 100644
--- a/mediagoblin/gmg_commands/shell.py
+++ b/mediagoblin/gmg_commands/shell.py
@@ -20,6 +20,8 @@ import code
from mediagoblin import mg_globals
from mediagoblin.gmg_commands import util as commands_util
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
def shell_parser_setup(subparser):
subparser.add_argument(
@@ -27,14 +29,23 @@ def shell_parser_setup(subparser):
action="store_true")
-SHELL_BANNER = """\
-GNU MediaGoblin shell!
-----------------------
-Available vars:
- - mgoblin_app: instantiated mediagoblin application
- - mg_globals: mediagoblin.globals
- - db: database instance
-"""
+if DISABLE_GLOBALS:
+ SHELL_BANNER = (
+ "GNU MediaGoblin shell!\n"
+ "----------------------\n"
+ "Available vars:\n"
+ " - app: instantiated mediagoblin application\n"
+ " - db: database session\n"
+ " - ctx: context object\n")
+else:
+ SHELL_BANNER = (
+ "GNU MediaGoblin shell!\n"
+ "----------------------\n"
+ "Available vars:\n"
+ " - app: instantiated mediagoblin application\n"
+ " - mg_globals: mediagoblin.globals\n"
+ " - db: database instance\n"
+ " - ctx: context object\n")
def py_shell(**user_namespace):
"""
@@ -59,18 +70,27 @@ def ipython_shell(**user_namespace):
user_ns=user_namespace)
return True
+
def shell(args):
"""
Setup a shell for the user either a normal Python shell or an IPython one
"""
- user_namespace = {
- 'mg_globals': mg_globals,
- 'mgoblin_app': commands_util.setup_app(args),
- 'db': mg_globals.database}
-
- if args.ipython:
- ipython_shell(**user_namespace)
- else:
- # Try ipython_shell first and fall back if not available
- if not ipython_shell(**user_namespace):
- py_shell(**user_namespace)
+ app = commands_util.setup_app(args)
+
+ def run_shell(db, ctx):
+ user_namespace = {
+ 'mg_globals': mg_globals,
+ 'app': app,
+ 'db': db,
+ "ctx": ctx}
+
+ if args.ipython:
+ ipython_shell(**user_namespace)
+ else:
+ # Try ipython_shell first and fall back if not available
+ if not ipython_shell(**user_namespace):
+ py_shell(**user_namespace)
+
+ with app.gen_context() as ctx:
+ db = ctx.db
+ run_shell(db, ctx)
diff --git a/mediagoblin/gmg_commands/users.py b/mediagoblin/gmg_commands/users.py
index 71149497..d1a8b72d 100644
--- a/mediagoblin/gmg_commands/users.py
+++ b/mediagoblin/gmg_commands/users.py
@@ -14,6 +14,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
+
+import sys
+
+import six
+
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin import auth
from mediagoblin import mg_globals
@@ -34,24 +41,25 @@ def adduser(args):
#TODO: Lets trust admins this do not validate Emails :)
commands_util.setup_app(args)
- args.username = unicode(commands_util.prompt_if_not_set(args.username, "Username:"))
+ args.username = six.text_type(commands_util.prompt_if_not_set(args.username, "Username:"))
args.password = commands_util.prompt_if_not_set(args.password, "Password:",True)
args.email = commands_util.prompt_if_not_set(args.email, "Email:")
db = mg_globals.database
users_with_username = \
- db.User.query.filter_by(
- username=args.username.lower()
+ db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
).count()
if users_with_username:
- print u'Sorry, a user with that name already exists.'
+ print(u'Sorry, a user with that name already exists.')
+ sys.exit(1)
else:
# Create the user
- entry = db.User()
- entry.username = args.username.lower()
- entry.email = unicode(args.email)
+ entry = db.LocalUser()
+ entry.username = six.text_type(args.username.lower())
+ entry.email = six.text_type(args.email)
entry.pw_hash = auth.gen_password_hash(args.password)
default_privileges = [
db.Privilege.query.filter(
@@ -66,13 +74,14 @@ def adduser(args):
entry.all_privileges = default_privileges
entry.save()
- print "User created (and email marked as verified)"
+ print(u"User created (and email marked as verified).")
def makeadmin_parser_setup(subparser):
subparser.add_argument(
'username',
- help="Username to give admin level")
+ help="Username to give admin level",
+ type=six.text_type)
def makeadmin(args):
@@ -80,23 +89,26 @@ def makeadmin(args):
db = mg_globals.database
- user = db.User.query.filter_by(
- username=unicode(args.username.lower())).one()
+ user = db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user:
user.all_privileges.append(
db.Privilege.query.filter(
db.Privilege.privilege_name==u'admin').one()
)
user.save()
- print 'The user is now Admin'
+ print(u'The user %s is now an admin.' % args.username)
else:
- print 'The user doesn\'t exist'
+ print(u'The user %s doesn\'t exist.' % args.username)
+ sys.exit(1)
def changepw_parser_setup(subparser):
subparser.add_argument(
'username',
- help="Username used to login")
+ help="Username used to login",
+ type=six.text_type)
subparser.add_argument(
'password',
help="Your NEW supersecret word to login")
@@ -107,20 +119,23 @@ def changepw(args):
db = mg_globals.database
- user = db.User.query.filter_by(
- username=unicode(args.username.lower())).one()
+ user = db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user:
user.pw_hash = auth.gen_password_hash(args.password)
user.save()
- print 'Password successfully changed'
+ print(u'Password successfully changed for user %s.' % args.username)
else:
- print 'The user doesn\'t exist'
+ print(u'The user %s doesn\'t exist.' % args.username)
+ sys.exit(1)
def deleteuser_parser_setup(subparser):
subparser.add_argument(
'username',
- help="Username to delete")
+ help="Username to delete",
+ type=six.text_type)
def deleteuser(args):
@@ -128,10 +143,12 @@ def deleteuser(args):
db = mg_globals.database
- user = db.User.query.filter_by(
- username=unicode(args.username.lower())).one()
+ user = db.LocalUser.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user:
user.delete()
- print 'The user %s has been deleted' % args.username
+ print('The user %s has been deleted.' % args.username)
else:
- print 'The user %s doesn\'t exist' % args.username
+ print('The user %s doesn\'t exist.' % args.username)
+ sys.exit(1)
diff --git a/mediagoblin/gmg_commands/util.py b/mediagoblin/gmg_commands/util.py
index 63e39ca9..4a4a9a74 100644
--- a/mediagoblin/gmg_commands/util.py
+++ b/mediagoblin/gmg_commands/util.py
@@ -18,6 +18,8 @@
from mediagoblin import app
import getpass
+import six
+
def setup_app(args):
"""
@@ -33,7 +35,7 @@ def prompt_if_not_set(variable, text, password=False):
"""
if variable is None:
if not password:
- variable=raw_input(text + u' ')
+ variable = six.moves.input(text + u' ')
else:
variable=getpass.getpass(text + u' ')
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index fe38a383..00000000
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ar/mediagoblin.po
index 607276b0..7647fa47 100644
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ar/mediagoblin.po
@@ -1,9 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Jiyda Mint Mohamed Moussa <jiydam@gmail.com>, 2013
+# Jiyda Mint Mohamed Moussa <jiydam@gmail.com>, 2013, 2016.
# Majid Al-Dharrab, 2011
# Mena Rezk Eid <minaeid90@gmail.com>, 2013
# OmarKH <Omar.w.kh@gmail.com>, 2011
@@ -12,29 +12,34 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/mediagoblin/language/ar/)\n"
+"POT-Creation-Date: 2014-09-21 11:08-0500\n"
+"PO-Revision-Date: 2016-02-10 02:24+0000\n"
+"Last-Translator: jiyda <jiydam@gmail.com>\n"
+"Language-Team: Arabic "
+"(http://www.transifex.com/projects/p/mediagoblin/language/ar/)\n"
+"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
+"X-Generator: Pootle 2.5.0\n"
"Generated-By: Babel 1.3\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-POOTLE-MTIME: 1455071053.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:303 mediagoblin/plugins/openid/views.py:202
msgid "Sorry, registration is disabled on this instance."
msgstr "عÙوًا، التسجيل غير متاح هنا."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:318
msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
+msgstr "عÙوًا، التبليغ غير متاح هنا."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
+#: mediagoblin/decorators.py:361 mediagoblin/plugins/ldap/views.py:55
#: mediagoblin/plugins/persona/views.py:77
+#, fuzzy
msgid "Sorry, authentication is disabled on this instance."
-msgstr ""
+msgstr "عÙوًا، التسجيل غير متاح هنا."
#: mediagoblin/auth/tools.py:43
msgid "Invalid User name or email address."
@@ -58,14 +63,17 @@ msgstr "عذرًا، لقد اختار مستخدم آخر هذا الايميل
#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#, fuzzy
msgid "The verification key or user id is incorrect."
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ التحقق أو معر٠المستخدم خاطئ"
#: mediagoblin/auth/views.py:161
msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، وتحرير ملÙÙƒ الشخصي، ونشر الصور!"
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+"تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، وتحرير ملÙÙƒ الشخصي، ونشر "
+"الصور!"
#: mediagoblin/auth/views.py:167
msgid "The verification key or user id is incorrect"
@@ -86,7 +94,11 @@ msgstr "أعدنا إرسال رسالة التحقق."
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "العنوان"
@@ -98,9 +110,13 @@ msgstr "وص٠هذا العمل."
#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr "بامكانك استخدام âŽ\n<a href=\"http://daringfireball.net/projects/markdown/basics\">âŽ\nMarkdown</a> للإدراج."
+msgstr ""
+"بامكانك استخدام âŽ\n"
+"<a href=\"http://daringfireball.net/projects/markdown/basics\">âŽ\n"
+"Markdown</a> للإدراج."
#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
#: mediagoblin/submit/forms.py:45
@@ -149,7 +165,7 @@ msgstr "ارسل لي رسالة عندما يقوم الاخرون بالتعل
#: mediagoblin/edit/forms.py:69
msgid "Enable insite notifications about events."
-msgstr ""
+msgstr "ØªÙØ¹ÙŠÙ„ الإشعارات الخاصة بالأحداث."
#: mediagoblin/edit/forms.py:71
msgid "License preference"
@@ -188,27 +204,28 @@ msgstr "رقم سري جديد"
#: mediagoblin/edit/forms.py:119
msgid "New email address"
-msgstr ""
+msgstr "عنوان البريد الإلكتروني الجديد"
#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/tests/test_util.py:143
msgid "Password"
msgstr "كلمة السر"
#: mediagoblin/edit/forms.py:125
+#, fuzzy
msgid "Enter your password to prove you own this account."
-msgstr ""
+msgstr "قم بإدخال رقمك السري القديم حتى تثبت انك صاحب هذا الحساب."
#: mediagoblin/edit/forms.py:155
msgid "Identifier"
-msgstr ""
+msgstr "المعرÙ"
#: mediagoblin/edit/forms.py:156
msgid "Value"
-msgstr ""
+msgstr "القيمة"
#: mediagoblin/edit/views.py:78
msgid "An entry with that slug already exists for this user."
@@ -259,7 +276,7 @@ msgstr "أنت تعدل مجموعة مستخدم آخر. كن حذرًا أثن
#: mediagoblin/edit/views.py:378
msgid "Your email address has been verified."
-msgstr ""
+msgstr "تم تحقق عنوان بريدك الإلكتروني"
#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
@@ -280,17 +297,17 @@ msgstr "ولكن, الرابط القديم للمسار الذي تم ايجاØ
#: mediagoblin/gmg_commands/assetlink.py:112
#, python-format
msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
+msgstr "لم نتمكن من ربط \"%s\": \"%s\" موجود ولكنه ليس رابط رمزي/n"
#: mediagoblin/gmg_commands/assetlink.py:119
#, python-format
msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
+msgstr "تخطي \"%s\"ØŒ تم الإعداد Ø¨Ø§Ù„ÙØ¹Ù„./n"
#: mediagoblin/gmg_commands/assetlink.py:124
#, python-format
msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
+msgstr "تم العثور على الرابط \"%s\"، إزالة./n"
#: mediagoblin/gmg_commands/batchaddmedia.py:34
msgid ""
@@ -299,68 +316,82 @@ msgid ""
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
+"لمزيد من المعلومات عن كيÙية تشغيل هذا/n النص (وكيÙية صياغة مل٠البيانات "
+"الوصÙية csv) اقرأ ØµÙØ­Ø© التوثيق MediaGoblin/n حول تحميل خط "
+"الأوامر/n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "اسم المستخدم الذي تنتمي إليه مدخلات الوسائط"
#: mediagoblin/gmg_commands/batchaddmedia.py:43
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "المسار إلى المل٠csv الذي يشتمل على البيانات الوصÙية."
#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#, fuzzy
msgid "Don't process eagerly, pass off to celery"
-msgstr ""
+msgstr "لا تتعجل المعالجة، يمكنك التنقل Ø¨Ø®ÙØ©."
#: mediagoblin/gmg_commands/batchaddmedia.py:63
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "عذرًا لا يوجد مستخدم باسم '{username}'"
#: mediagoblin/gmg_commands/batchaddmedia.py:74
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "لم يتم العثور على المل٠ÙÙŠ (المسار)ØŒ استخدم علامة -h للمساعدة"
#: mediagoblin/gmg_commands/batchaddmedia.py:115
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
+"خطأ ÙÙŠ الوسائط '{media_id}' القيمة '{error_path}': {error_msg}\n"
+"لم يتم تحميل البيانات الوصÙية."
#: mediagoblin/gmg_commands/batchaddmedia.py:141
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
+"خطأ: لا يمكن الوصول إلى المل٠المحلي {filename}./n لم يتم تحميل المل٠"
+"{filename}."
#: mediagoblin/gmg_commands/batchaddmedia.py:157
msgid ""
"Successfully submitted {filename}!\n"
-"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
"uploaded successfully."
msgstr ""
+"تم تقديم المل٠{filename}!\n"
+" بنجاح/nتأكد من الاطلاع على لوحة معالجة الوسائط ÙÙŠ الموقع الإلكتروني الخاص "
+"بك لتتأكد من/n التحميل بنجاح."
#: mediagoblin/gmg_commands/batchaddmedia.py:160
msgid "FAIL: This file is larger than the upload limits for this site."
-msgstr ""
+msgstr "خطأ: هذا المل٠أكبر من حدود التحميل لهذا الموقع."
#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid "FAIL: This file will put this user past their upload limits."
-msgstr ""
+msgstr "خطأ: سو٠يسبب هذا المل٠أن يتخطى المستخدم حد التحميل الخاص به."
#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "خطأ: هذا المستخدم متخطي لحد التحميل Ø¨Ø§Ù„ÙØ¹Ù„."
#: mediagoblin/gmg_commands/batchaddmedia.py:168
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "تم تحميل {files_uploaded} من {files_attempted} بنجاح ."
#: mediagoblin/meddleware/csrf.py:134
msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "CSRF كوكيز غير موجودة, وهذا من الممكن ان يكون نتيجة لمانع الكوكيز او شئ من هذا القبيل.<br/>تأكد من أنك قمت بالسماح لخصائص الكوكيز لهذا الميدان."
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
+msgstr ""
+"CSRF كوكيز غير موجودة, وهذا من الممكن ان يكون نتيجة لمانع الكوكيز او شئ من "
+"هذا القبيل.<br/>تأكد من أنك قمت بالسماح لخصائص الكوكيز لهذا الميدان."
#: mediagoblin/media_types/__init__.py:79
#: mediagoblin/media_types/__init__.py:101
@@ -383,11 +414,12 @@ msgstr "يا سلام! Ù†ÙØ´Ø±ÙŽØª!"
#: mediagoblin/media_types/blog/views.py:198
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "أخيرًا! تم تعديل منشور المدونة"
#: mediagoblin/media_types/blog/views.py:320
+#, fuzzy
msgid "You deleted the Blog."
-msgstr ""
+msgstr "لقد قمت بإلغاء الميديا."
#: mediagoblin/media_types/blog/views.py:326
#: mediagoblin/user_pages/views.py:329
@@ -395,24 +427,25 @@ msgid "The media was not deleted because you didn't check that you were sure."
msgstr "لم يتم إلغاء الميديا لأنك لم تقم بإختيار انك متأكد من ذلك."
#: mediagoblin/media_types/blog/views.py:333
+#, fuzzy
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "أنت على وشك حذ٠وسائط مستخدم آخر. كن حذرًا أثناء العملية."
#: mediagoblin/media_types/blog/views.py:344
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "تم حذ٠المدونة بسبب عدم امتلاك أي حقوق."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Ø¥Ø¶Ø§ÙØ© مشاركة مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "تحرير مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "حذ٠مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
@@ -434,11 +467,11 @@ msgstr "إلغاء"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> اذهب إلى قائمة العرض </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr " لا توجد مشاركات مدونة حتى الان. "
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -467,7 +500,7 @@ msgstr "احذ٠نهائيًا"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "إنشاء / تعديل مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -480,32 +513,32 @@ msgstr "اضÙ"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "إنشاء / تعديل مشاركة مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "إنشاء / تعديل مشاركة مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "%(blog_owner_name) مالك المدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "عرض"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "انشأ مدونة"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr " لوحة تحكم المدونة "
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
-msgstr ""
+msgstr "خطأ ÙÙŠ تشغيل unoconvØŒ تÙقد مل٠السجل"
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
@@ -513,39 +546,102 @@ msgstr "ÙØ´Ù„ ÙÙŠ تحويل الÙيديو"
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
-msgstr ""
+msgstr "حذ٠امتياز خاص"
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr ""
+msgstr "حظر المستخدم"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
-msgstr ""
+msgstr "ارسل رسالة إلى المستخدم"
#: mediagoblin/moderation/forms.py:24
msgid "Delete the content"
-msgstr ""
+msgstr "احذ٠المحتوى"
#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
-msgstr ""
+msgstr "سيتم حظر المستخدم حتى:"
#: mediagoblin/moderation/forms.py:57
msgid "Why are you banning this User?"
-msgstr ""
+msgstr "لماذا ستحظر هذا المستخدم؟"
#: mediagoblin/moderation/forms.py:109
msgid "What action will you take to resolve the report?"
-msgstr ""
+msgstr "ما Ø§Ù„ÙØ¹Ù„ الذي سو٠تقوم باتخاذه لتسوية التبليغ؟"
#: mediagoblin/moderation/forms.py:115
msgid "What privileges will you take away?"
+msgstr "ما الامتياز الخاص الذي سو٠تحذÙه؟"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "لماذا تم حظر المستخدم؟"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "رسالة إلى مستخدم:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+"\n"
+"{mod} مستخدم محظور {user} تاريخ الانتهاء {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:34
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
msgstr ""
+"\n"
+"{mod} تم حذ٠الامتيازات {privilege} الخاصة بالمستخدم {user}."
+
+#: mediagoblin/moderation/tools.py:47
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} مستخدم محظور {user} تاريخ الانتهاء {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:51
+msgid "until {date}"
+msgstr "حتى {date}"
+
+#: mediagoblin/moderation/tools.py:53
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "غير محدد"
+
+#: mediagoblin/moderation/tools.py:62
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} تم إرسال بريد إلكتروني تحذيري إلى المستخدم {user}."
+
+#: mediagoblin/moderation/tools.py:71
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} تم حذ٠التعليق."
+
+#: mediagoblin/moderation/tools.py:78
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} تم حذ٠مدخل الوسائط."
#: mediagoblin/moderation/tools.py:91
msgid "Warning from"
-msgstr ""
+msgstr "نموذج التحذير"
#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
@@ -554,99 +650,124 @@ msgstr "قام بالتعليق على مشاركتك"
#: mediagoblin/notifications/views.py:35
#, python-format
msgid "Subscribed to comments on %s!"
-msgstr ""
+msgstr "تم الاشتراك ÙÙŠ التعليق على %s!"
#: mediagoblin/notifications/views.py:48
#, python-format
msgid "You will not receive notifications for comments on %s."
-msgstr ""
+msgstr "لن تتلقى إشعارات التعليقات على %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:241
msgid "Must provide an oauth_token."
-msgstr ""
+msgstr "يجب توÙير رمز التصديق oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:246 mediagoblin/oauth/views.py:297
msgid "No request token found."
-msgstr ""
+msgstr "لم يتم العثور على أي رموز طلبات."
#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
#: mediagoblin/submit/views.py:78
msgid "Sorry, the file size is too big."
-msgstr ""
+msgstr "عذرًا، المل٠كبير جدًا."
#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
#: mediagoblin/submit/views.py:81
msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
+msgstr "عذرًا، سو٠يتسبب تحميل هذا المل٠ÙÙŠ تخطي حد التحميل الخاص بك."
#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
#: mediagoblin/submit/views.py:87
msgid "Sorry, you have reached your upload limit."
-msgstr ""
+msgstr "عذرًا، لقد وصلت إلى حد التحميل الخاص بك."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "ادخل عنوان URL للوسائط التي سيتم تمييزها."
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "أساسي"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "ثانوي"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "ثالث"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
-msgstr ""
+msgstr "--------------------{display_type}- ميزة---------------------/n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "كي٠يسير هذا الأمر؟"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "كي٠يمكن تمييز الوسائط؟"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
"\n"
-" Go to the page of the media entry you want to feature. Copy it's URL and\n"
-" then paste it into a new line in the text box above. There should be only\n"
-" one url per line. The url that you paste into the text box should be under\n"
-" the header describing how prominent a feature it will be (whether Primary,\n"
-" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
-" inside the text box, click the Submit Query button, and your media should be\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
" displayed on the front page.\n"
" "
msgstr ""
+"\n"
+"اذهب إلى ØµÙØ­Ø© مدخل الوسائط الذي ترغب ÙÙŠ تمييزه. انسخ عنوان URL الخاص به/nثم "
+"الصق سطر جديد ÙÙŠ صندوق النص ÙÙŠ الأعلى. يجب أن يكون هناك/nعنوان URL واحد ÙÙŠ "
+"كل مرة. يجب أن يكون عنوان URL الذي وضعته تحت/nالعنوان يص٠مدى الميزة (سواء "
+"أساسية أو/nثانوية أو ثالثة). بمجرد أن تكون جميع الوسائط الذي ترغب ÙÙŠ "
+"تمييزها/nداخل صندوق النص، اضغط على إدخال الاستÙهام. ويجب أن عرض الوسائط "
+"الخاصة بك/nÙÙŠ Ø§Ù„ØµÙØ­Ø© الأمامية/n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "هل هناك طريقة أخرى لإدارة الوسائط المميزة؟"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
"\n"
-" Yes. If you would prefer, you may go to the media homepage of the piece\n"
-" of media you would like to feature or unfeature and look at the bar to\n"
-" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
-" the media will be featured as a Primary Feature at the top of the page.\n"
-" All other featured media entries will remain as features, but will be\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
" pushed further down the page.<br /><br />\n"
"\n"
-" If you go to the media homepage of a piece of media that is currently\n"
-" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
-" where previously there was the button which said \"Feature\". Click\n"
-" Unfeature and that media entry will no longer be displayed on the\n"
-" front page, although you can feature it again at any point. Promote\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
" moves the featured media higher up on the page and makes it more\n"
-" prominent and Demote moves the featured media lower down and makes it\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
" less prominent.\n"
" "
msgstr ""
@@ -658,13 +779,19 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
"\n"
-" These categories just describe how prominent a feature will be on your\n"
-" front page. Primary Features are placed at the top of the front page and are\n"
-" much larger. Next are Secondary Features, which are slightly smaller.\n"
-" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
"\n"
-" Primary Features also can display longer descriptions than Secondary\n"
-" Features, and Secondary Features can display longer descriptions than\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
" Tertiary Features."
msgstr ""
@@ -677,12 +804,18 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
msgid ""
"\n"
-" When a media entry is featured, the entry's title, it's thumbnail and a\n"
-" portion of its description will be displayed on your website's front page.\n"
-" The number of characters displayed varies on the prominence of the feature.\n"
-" Primary Features display the first 512 characters of their description,\n"
-" Secondary Features display the first 256 characters of their description,\n"
-" and Tertiary Features display the first 128 characters of their description.\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
" "
msgstr ""
@@ -693,43 +826,57 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
"\n"
-" Unfeature a media by removing its line from the above textarea and then\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
" pressing the Submit Query button.\n"
" "
msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "تحذير:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
"\n"
-" When copying and pasting urls into the above text box, be aware that if\n"
-" you make a typo, once you press Submit Query, your media entry will NOT be\n"
-" featured. Make sure that all your intended Media Entries are featured.\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
" "
msgstr ""
+"\n"
+"عند نسخ ولصق عناوين URL ÙÙŠ صندوق النص ÙÙŠ الأعلى، كن على علم بأن ÙÙŠ حالة وجود "
+"خطأ\n"
+"وضغط تقديم، لن يتم تمييز مدخل البيانات الخاص بك. تأكد من أن جميع مدخلات "
+"البيانات\n"
+"المقصودة قد تم تمييزها.\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
msgid ""
"\n"
"Feature Media "
msgstr ""
+"\n"
+"وسائط مميزة"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
msgid "Feature"
-msgstr ""
+msgstr "مميز"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
msgid ""
"\n"
"Unfeature Media "
msgstr ""
+"\n"
+"وسائط غير مميزة"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
msgid "Unfeature"
-msgstr ""
+msgstr "غير مميز"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
msgid ""
@@ -763,30 +910,32 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
-" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
-" featuring media, a regular user would see a blank page, so be sure to\n"
-" have media featured as long as your instance has the 'archivalook'\n"
-" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "لوحة التحكم ÙÙŠ المميزات"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
@@ -794,6 +943,9 @@ msgid ""
"\tyour web browser does not support HTML5\n"
"\taudio."
msgstr ""
+"عذرًا، لن يعمل هذا المقطع الصوتي\n"
+"/لا يدعم Ù…ØªØµÙØ­ tyour صيغة صوت\n"
+"/HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
@@ -801,6 +953,9 @@ msgid ""
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
msgstr ""
+"يمكنك الحصول على Ù…ØªØµÙØ­ حديث يمكن به\n"
+"تشغيل المقطع الصوتي على <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
@@ -809,6 +964,9 @@ msgid ""
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"عذرًا، لن يعمل هذا الÙيديو لأن\n"
+"/Ø§Ù„Ù…ØªØµÙØ­ لا يدعم صيغة Ùيديو\n"
+"/HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -817,6 +975,9 @@ msgid ""
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
+"يمكنك الحصول على Ù…ØªØµÙØ­ حديث يمكن به\n"
+"تشغيل الÙيديو على <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
@@ -833,12 +994,13 @@ msgid "Email address"
msgstr "عنوان البريد الإلكتروني"
#: mediagoblin/plugins/basic_auth/forms.py:39
+#, fuzzy
msgid "Username or Email"
-msgstr ""
+msgstr "اسم المستخدم او الايميل"
#: mediagoblin/plugins/basic_auth/forms.py:46
msgid "Stay logged in"
-msgstr ""
+msgstr "البقاء قيد تسجيل الدخول"
#: mediagoblin/plugins/basic_auth/forms.py:51
msgid "Username or email"
@@ -846,28 +1008,31 @@ msgstr "اسم المستخدم او الايميل"
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "إذا كان هذا الايميل(حساس للحرو٠الكبيرة والصغيرة!) Ù…ÙØ³Ø¬Ù„, Ùقد تم إرسال ايميل به تعليمات عن كيÙية تغيير رقمك السري."
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+"إذا كان هذا الايميل(حساس للحرو٠الكبيرة والصغيرة!) Ù…ÙØ³Ø¬Ù„, Ùقد تم إرسال ايميل "
+"به تعليمات عن كيÙية تغيير رقمك السري."
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
msgstr "لم نتمكن من العثور على أحد له أسم المستخدم هذا."
#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
+msgid "An email has been sent with instructions on how to change your password."
msgstr "لقد تم إرسال ايميل به تعليمات عن كيÙية تغيير رقمك السري."
#: mediagoblin/plugins/basic_auth/views.py:75
msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "تعذر إرسال رسالة استعادة كلمة السر لأن اسم المستخدم معطل أو لأننا لم نتحقق من بريدك الإلكتروني."
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+"تعذر إرسال رسالة استعادة كلمة السر لأن اسم المستخدم معطل أو لأننا لم نتحقق "
+"من بريدك الإلكتروني."
#: mediagoblin/plugins/basic_auth/views.py:123
msgid "The user id is incorrect."
-msgstr ""
+msgstr "تعري٠المستخدم غير صحيح."
#: mediagoblin/plugins/basic_auth/views.py:139
msgid "You can now log in using your new password."
@@ -878,10 +1043,12 @@ msgid ""
"You are no longer an active user. Please contact the system admin to "
"reactivate your account."
msgstr ""
+"لم يعد حسابك Ù…ÙØ¹Ù„ًا بعد الآن، برجاء الاتصال بمدير النظام لإعادة ØªÙØ¹ÙŠÙ„ الحساب "
+"الخاص بك."
#: mediagoblin/plugins/basic_auth/views.py:215
msgid "Your password was changed successfully"
-msgstr ""
+msgstr "تم تغيير رقمك السري بنجاح"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
@@ -969,7 +1136,9 @@ msgstr "اسم العميل Ø§Ù„Ù…Ù†Ø´ÙØ¦"
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
-msgstr "سو٠يكون هذا مرئي بالنسبة للمستخدمين حتى يتاح\nللبرنامج خاصتك بالتصديق عليهم."
+msgstr ""
+"سو٠يكون هذا مرئي بالنسبة للمستخدمين حتى يتاح\n"
+"للبرنامج خاصتك بالتصديق عليهم."
#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
@@ -978,12 +1147,22 @@ msgstr "النوع"
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
" JavaScript client)."
-msgstr "<strong>سري</strong> - يستطيع العميل\nان يقوم بطلب نسخة من GNU MediaGoblin والتي من الممكن ان \nيعترضه وكيل المستخدم (مثلا الخادم من جانب العميل).<br />\n<strong>عام</strong> - لا يستطيع العميل ارسال طلبات سرية\nلنسخة من GNU MediaGoblin (مثلا \nخادم Ø§Ù„Ø¬Ø§ÙØ§ سكريبت من جانب العميل)."
+msgstr ""
+"<strong>سري</strong> - يستطيع العميل\n"
+"ان يقوم بطلب نسخة من GNU MediaGoblin والتي من الممكن ان \n"
+"يعترضه وكيل المستخدم (مثلا الخادم من جانب العميل).<br />\n"
+"<strong>عام</strong> - لا يستطيع العميل ارسال طلبات سرية\n"
+"لنسخة من GNU MediaGoblin (مثلا \n"
+"خادم Ø§Ù„Ø¬Ø§ÙØ§ سكريبت من جانب العميل)."
#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
@@ -993,7 +1172,9 @@ msgstr "تحويل لينك"
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
-msgstr "الرابط الموجه للبرنامج, هذا الحقل\n<strong>مطلوب</strong> لجمهور العملاء."
+msgstr ""
+"الرابط الموجه للبرنامج, هذا الحقل\n"
+"<strong>مطلوب</strong> لجمهور العملاء."
#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
@@ -1015,29 +1196,29 @@ msgstr "عميلك المنشئ"
#: mediagoblin/plugins/openid/views.py:268
#: mediagoblin/plugins/openid/views.py:297
msgid "Sorry, an account is already registered to that OpenID."
-msgstr ""
+msgstr "عذرًا، هذا الحساب مسجل Ø¨Ø§Ù„ÙØ¹Ù„ لهذه الهوية Ø§Ù„Ù…ÙØªÙˆØ­Ø©."
#: mediagoblin/plugins/openid/forms.py:38
msgid "OpenID"
-msgstr ""
+msgstr "هوية Ù…ÙØªÙˆØ­Ø©"
#: mediagoblin/plugins/openid/views.py:48
msgid "Sorry, the OpenID server could not be found"
-msgstr ""
+msgstr "عذرًا، لا يمكن العثور على خادم الهوية Ø§Ù„Ù…ÙØªÙˆØ­Ø©."
#: mediagoblin/plugins/openid/views.py:61
#, python-format
msgid "No OpenID service was found for %s"
-msgstr ""
+msgstr "لم يتم العثور على خدمة الهوية Ø§Ù„Ù…ÙØªÙˆØ­Ø© Ù„ %s."
#: mediagoblin/plugins/openid/views.py:106
#, python-format
msgid "Verification of %s failed: %s"
-msgstr ""
+msgstr "التحقق من %s ÙØ´Ù„: %s"
#: mediagoblin/plugins/openid/views.py:117
msgid "Verification cancelled"
-msgstr ""
+msgstr "تم إلغاء التحقق"
#: mediagoblin/plugins/openid/views.py:314
msgid "Your OpenID url was saved successfully."
@@ -1091,41 +1272,42 @@ msgstr "ÙØ´Ù„ الولوج!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
msgid "Log in to create an account!"
-msgstr ""
+msgstr "تسجيل الدخول لإنشاء الحساب!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
msgid "Or login with a password!"
-msgstr ""
+msgstr "أو قم بتسجيل الدخول باستخدام الرقم السري!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
msgid "Or login with OpenID!"
-msgstr ""
+msgstr "أو قم بتسجيل الدخول باستخدام الهوية Ø§Ù„Ù…ÙØªÙˆØ­Ø©!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
msgid "Or register with OpenID!"
-msgstr ""
+msgstr "أو سجل باستخدام الهوية Ø§Ù„Ù…ÙØªÙˆØ­Ø©!"
#: mediagoblin/plugins/persona/__init__.py:90
msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
+msgstr "عذرًا، الحساب مسجل Ø¨Ø§Ù„ÙØ¹Ù„ لهذا البريد الشخصي."
#: mediagoblin/plugins/persona/views.py:138
msgid "The Persona email address was successfully removed."
-msgstr ""
+msgstr "تم إزالة عنوان البريد الشخصي بنجاح."
#: mediagoblin/plugins/persona/views.py:144
msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
+"You can't delete your only Persona email address unless you have a "
+"password set."
msgstr ""
+"لا يمكن حذ٠عنوان البريد الإلكتروني الخاص بك ما لم تضبط كلمة المرور الخاصة "
+"بك."
#: mediagoblin/plugins/persona/views.py:149
msgid "That Persona email address is not registered to this account."
msgstr ""
#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
+msgid "Sorry, an account is already registered with that Persona email address."
msgstr ""
#: mediagoblin/plugins/persona/views.py:192
@@ -1175,7 +1357,8 @@ msgstr "الملÙ"
#: mediagoblin/submit/forms.py:41
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -1206,10 +1389,6 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/base.html:97
msgid "Verify your email!"
msgstr "تأكد من بريدك الإلكترونى!"
@@ -1251,6 +1430,10 @@ msgstr "أض٠وسائط"
msgid "Create new collection"
msgstr "إنشاء مجموعة جديدة"
+#: mediagoblin/templates/mediagoblin/base.html:163
+msgid "Moderation powers:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:169
msgid "User management panel"
msgstr ""
@@ -1330,22 +1513,34 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "أهلًا يا %(username)sØŒ\n\nØ§ÙØªØ­ الرابط التالي\nÙÙŠ Ù…ØªØµÙØ­Ùƒ Ù„ØªÙØ¹ÙŠÙ„ حسابك ÙÙŠ غنو ميدياغوبلن:\n\n%(verification_url)s"
+msgstr ""
+"أهلًا يا %(username)s،\n"
+"\n"
+"Ø§ÙØªØ­ الرابط التالي\n"
+"ÙÙŠ Ù…ØªØµÙØ­Ùƒ Ù„ØªÙØ¹ÙŠÙ„ حسابك ÙÙŠ غنو ميدياغوبلن:\n"
+"\n"
+"%(verification_url)s"
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
#, python-format
msgid ""
"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "برعاية <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> مشروع."
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+"برعاية <a href=\"http://mediagoblin.org/\" title='Version %"
+"(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> مشروع."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
msgid ""
"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+"تم النشر ÙˆÙقا Ù„ <a "
"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "تم النشر ÙˆÙقا Ù„ <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Source code</a> متاح."
+"href=\"%(source_link)s\">Source code</a> متاح."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
msgid "Terms of Service"
@@ -1361,15 +1556,19 @@ msgstr "اهلا, مرحبا بك ÙÙŠ موقع MediaGoblin."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "هذا الموقع يقوم بتشغيل <a href=\"http://mediagoblin.org\">MediaGoblin</a>, وهو برنامج Ø§Ø³ØªØ¶Ø§ÙØ© ميديا ÙØ§Ø¦Ù‚ الروعة."
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+"هذا الموقع يقوم بتشغيل <a href=\"http://mediagoblin.org\">MediaGoblin</a>, وهو "
+"برنامج Ø§Ø³ØªØ¶Ø§ÙØ© ميديا ÙØ§Ø¦Ù‚ الروعة."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "لكي تضي٠الميديا خاصتك, تضع التعليقات, والمزيد, يجب عليك الدخول بحساب MediaGoblin الخاص بك."
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+"لكي تضي٠الميديا خاصتك, تضع التعليقات, والمزيد, يجب عليك الدخول بحساب "
+"MediaGoblin الخاص بك."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
@@ -1385,7 +1584,9 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
@@ -1427,7 +1628,9 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "هل تريد ÙØ¹Ù„ا إلغاء المستخدم '%(user_name)s' وكل الميديا/التعليقات المتعلقة به؟"
+msgstr ""
+"هل تريد ÙØ¹Ù„ا إلغاء المستخدم '%(user_name)s' وكل الميديا/التعليقات المتعلقة "
+"به؟"
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
msgid "Yes, really delete my account"
@@ -1490,12 +1693,14 @@ msgstr ""
msgid ""
"Hi,\n"
"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
"please follow the link below to verify your new email address.\n"
"\n"
"%(verification_url)s\n"
"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
"this email."
msgstr ""
@@ -1544,14 +1749,14 @@ msgid ""
"Sorry, this audio will not work because \n"
"\tyour web browser does not support HTML5 \n"
"\taudio."
-msgstr "عذرا, لن يتم تشغيل الصوت لأن âŽ\nÂ»Ù…ØªØµÙØ­Ùƒ لا يدعم HTML5 âŽ\n»صوتيا."
+msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
msgid ""
"You can get a modern web browser that \n"
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
-msgstr "تستطيع الحصول على Ù…ØªØµÙØ­ حديث âŽ\n»يمكنه تشغيل الصوت ÙÙŠ <a href=\"http://getfirefox.com\">âŽ\n» http://getfirefox.com</a>!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
@@ -1564,8 +1769,9 @@ msgid "WebM file (Vorbis codec)"
msgstr "مل٠WebM (Vorbic كوديك)"
#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+#, fuzzy
msgid "Created"
-msgstr ""
+msgstr "أنشئ"
#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
@@ -1621,22 +1827,27 @@ msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
-msgstr "عذرا, لن يتم تشغيل هذا الÙيديو لأن âŽ\nÂ»Ù…ØªØµÙØ­Ùƒ لا يدعم HTML5 âŽ\n»Ùيديو."
+msgstr ""
+"عذرا, لن يتم تشغيل هذا الÙيديو لأن âŽ\n"
+"Â»Ù…ØªØµÙØ­Ùƒ لا يدعم HTML5 âŽ\n"
+"»Ùيديو."
#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
-msgstr "تستطيع الحصول على Ù…ØªØµÙØ­ حديث âŽ\n»يمكنه تشغيل هذا الÙيديو ÙÙŠ <a href=\"http://getfirefox.com\">âŽ\n» http://getfirefox.com</a>!"
+msgstr ""
+"تستطيع الحصول على Ù…ØªØµÙØ­ حديث âŽ\n"
+"»يمكنه تشغيل هذا الÙيديو ÙÙŠ <a href=\"http://getfirefox.com\">âŽ\n"
+"» http://getfirefox.com</a>!"
#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
msgid "WebM file (VP8/Vorbis)"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
+msgid "Here you can track the state of media being processed on this instance."
msgstr "يمكنك متابعة عملية معالجة وسائط معرضك من هنا."
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
@@ -1644,6 +1855,32 @@ msgstr "يمكنك متابعة عملية معالجة وسائط معرضك م
msgid "Media in-processing"
msgstr "توجد وسائط تحت المعالجة"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1654,6 +1891,14 @@ msgstr "لا توجد وسائط تحت المعالجة"
msgid "These uploads failed to process:"
msgstr "ÙØ´Ù„ت معالجة هذه Ø§Ù„Ù…Ù„ÙØ§Øª:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1663,6 +1908,10 @@ msgstr "لا توجد مداخل ÙØ§Ø´Ù„Ø©!"
msgid "Last 10 successful uploads"
msgstr "آخر 10 تحويلات ناجحة"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1703,6 +1952,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1908,9 +2161,9 @@ msgid "All reports that %(username)s has filed"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
-#, python-format
+#, fuzzy, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "مل٠%(username)s الشخصي"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
@@ -1944,7 +2197,8 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
msgid ""
"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
" "
msgstr ""
@@ -1952,10 +2206,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1978,9 +2228,9 @@ msgid "Add your media"
msgstr "اض٠الميديا الخاصة بك"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
-#, python-format
+#, fuzzy, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "■اختيار الميديا بواسطة <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
@@ -2018,9 +2268,9 @@ msgid "Really delete collection: %(title)s?"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
-#, python-format
+#, fuzzy, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "هل تريد ÙØ¹Ù„ا إلغاء %(media_title)s من %(collection_title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2045,8 +2295,12 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s مجموعات"
#, python-format
msgid ""
"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "اهلا, %(username)s,\n%(comment_author)s قام بالتعليق على مشاركتك (%(comment_url)s) ÙÙŠ %(instance_name)s\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+"اهلا, %(username)s,\n"
+"%(comment_author)s قام بالتعليق على مشاركتك (%(comment_url)s) ÙÙŠ %"
+"(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
@@ -2058,7 +2312,14 @@ msgstr "%(username)s ميديا"
msgid ""
"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "<a href=\"%(user_url)s\">\n%(username)s\n</a>\n's ميديا بالمحدد\n<a href=\"%(tag_url)s\">\n%(tag)s\n</a>"
+msgstr ""
+"<a href=\"%(user_url)s\">\n"
+"%(username)s\n"
+"</a>\n"
+"'s ميديا بالمحدد\n"
+"<a href=\"%(tag_url)s\">\n"
+"%(tag)s\n"
+"</a>"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
@@ -2089,8 +2350,7 @@ msgid "Add a new collection"
msgstr "Ø¥Ø¶Ø§ÙØ© مجموعة جديدة"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
+msgid "You can track the state of media being processed for your gallery here."
msgstr "يمكنك متابعة عملية معالجة وسائط معرضك من هنا."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
@@ -2148,8 +2408,7 @@ msgid "Almost done! Your account still needs to be activated."
msgstr "أوشكنا على الانتهاء! ما زال حسابك بحاجة إلى Ø§Ù„ØªÙØ¹ÙŠÙ„."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
+msgid "An email should arrive in a few moments with instructions on how to do so."
msgstr "ستصلك رسالة إلكترونية خلال لحظات بها التعليمات."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
@@ -2162,16 +2421,18 @@ msgstr "أعد إرسال رسالة التحقق"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
+"Someone has registered an account with this username, but it still has to"
+" be activated."
msgstr "سجّل أحدهم حسابًا بهذا الاسم، ولكننا بانتظار Ø§Ù„ØªÙØ¹ÙŠÙ„ حتى الآن."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "إن كنت أنت ذلك الشخص لكنك Ùقدت رسالة التحقق، يمكنك <a href=\"%(login_url)s\">الولوج</a> وإعادة إرسالها."
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+"إن كنت أنت ذلك الشخص لكنك Ùقدت رسالة التحقق، يمكنك <a href=\"%"
+"(login_url)s\">الولوج</a> وإعادة إرسالها."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
@@ -2185,6 +2446,14 @@ msgstr "تم تجميعه ÙÙŠ"
msgid "Add to a collection"
msgstr "Ø¥Ø¶Ø§ÙØ© مجموعة"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2233,39 +2502,43 @@ msgstr "تحدد ب"
msgid "Could not read the image file."
msgstr "لم نستطيع قراءة هذه الصورة."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:39
msgid "Oops!"
msgstr "ويحي!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:40
msgid "An error occured"
msgstr "حدث خطأ"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:54
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:56
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:64
msgid "Operation not allowed"
msgstr "غير مسموح بهذه العملية"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:65
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
-msgstr "عذرا ديÙ, لا استطيع ترك ØªÙØ¹Ù„ هذا!</p><p>لقد حاولت تشغيل خاصية ليست مسموحة لك. هل كنت تحاول إلغاء جميع حسابات المستخدمين مجددا؟"
+msgstr ""
+"عذرا ديÙ, لا استطيع ترك ØªÙØ¹Ù„ هذا!</p><p>لقد حاولت تشغيل خاصية ليست مسموحة "
+"لك. هل كنت تحاول إلغاء جميع حسابات المستخدمين مجددا؟"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:73
msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "يبدو أنه لا توجد ØµÙØ­Ø© بهذا العنوان, عذرا</p><p>إذا كنت متأكد من صحة العنوان, من الممكن أن تكون Ø§Ù„ØµÙØ­Ø© التي تبحث عنها قد تم نقلها أو إلغاءها."
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+"يبدو أنه لا توجد ØµÙØ­Ø© بهذا العنوان, عذرا</p><p>إذا كنت متأكد من صحة العنوان, "
+"من الممكن أن تكون Ø§Ù„ØµÙØ­Ø© التي تبحث عنها قد تم نقلها أو إلغاءها."
#: mediagoblin/tools/timesince.py:62
msgid "year"
@@ -2297,7 +2570,8 @@ msgstr "تعليق"
#: mediagoblin/user_pages/forms.py:25
msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
"target=\"_blank\">Markdown</a> for formatting."
msgstr ""
@@ -2320,7 +2594,9 @@ msgstr "إدراج ملاحظة"
#: mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -2376,8 +2652,8 @@ msgstr "لم يتم إلغاء المادة لأنك لم تقم بإختيار
#: mediagoblin/user_pages/views.py:421
msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
msgstr "أنت على وشك حذ٠مادة من مجموعة مستخدم آخر. كن حذرا."
#: mediagoblin/user_pages/views.py:453
@@ -2387,10 +2663,10 @@ msgstr "لقد قمت بإلغاء المجموعة \"%s\""
#: mediagoblin/user_pages/views.py:460
msgid ""
-"The collection was not deleted because you didn't check that you were sure."
+"The collection was not deleted because you didn't check that you were "
+"sure."
msgstr "لم يتم إلغاء المجموعة لأنك لم تقم بإختيار انك متأكد من ذلك."
#: mediagoblin/user_pages/views.py:468
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
+msgid "You are about to delete another user's collection. Proceed with caution."
msgstr "أنت على وشك حذ٠مجموعة مستخدم آخر. كن حذرا."
diff --git a/mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 3f44efd7..00000000
--- a/mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/bg/mediagoblin.po
index da4c53ce..db792584 100644
--- a/mediagoblin/i18n/bg/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/bg/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mediagoblin/language/bg/)\n"
"MIME-Version: 1.0\n"
@@ -19,70 +19,174 @@ msgstr ""
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Ðеправилно потребителÑко име или е-поща."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Заглавие"
@@ -91,7 +195,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -107,11 +211,11 @@ msgstr "Етикети"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -139,125 +243,137 @@ msgstr ""
msgid "This address contains errors"
msgstr "ÐдреÑÑŠÑ‚ Ñъдържа грешки"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Заглавието е задължително"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "ОпиÑание на колекциÑта"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Стара парола"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Ðова парола"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Ðов Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Парола"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Промените в профила Ñа запазени"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "ÐаÑтройките на профила Ñа запазени"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "ÐдреÑÑŠÑ‚ на е-пощата ви е проверен."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Грешна парола"
@@ -288,7 +404,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -296,58 +412,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -373,28 +489,28 @@ msgstr "ОпиÑание"
msgid "I am sure I want to delete this"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -414,7 +530,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Редактиране"
@@ -424,7 +540,7 @@ msgstr "Редактиране"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Изтриване"
@@ -539,7 +655,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -557,26 +724,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -631,7 +798,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -760,23 +927,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -924,11 +1088,7 @@ msgstr "Изпращане на указаниÑ"
msgid "Forgot your password?"
msgstr "Забравили Ñте паролата Ñи?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "МеÑтоположение"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Разглеждане Ñ <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -995,7 +1155,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1008,8 +1168,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1017,39 +1177,39 @@ msgstr ""
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Грешка при проверката на %s: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Проверката е отменена"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1073,7 +1233,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1105,26 +1265,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1148,15 +1308,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr ""
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1175,11 +1335,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "ТрÑбва да предоÑтавите файл"
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1202,30 +1362,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Проверете е-пощата Ñи!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "изход"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "ПромÑна наÑтройките на профила"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1233,25 +1389,29 @@ msgstr "ПромÑна наÑтройките на профила"
msgid "Media processing panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Изход"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Създаване на нова колекциÑ"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1305,7 +1465,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1396,13 +1556,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1420,6 +1580,47 @@ msgstr "Запазване на промените"
msgid "Changing %(username)s's email"
msgstr "ПромÑна е-пощата на %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1445,7 +1646,7 @@ msgstr "ПромÑна наÑтройките на профила на %(usernam
msgid "Delete my account"
msgstr "Изтриване на профила ми"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Е-поща"
@@ -1499,19 +1700,6 @@ msgstr ""
msgid "New comments"
msgstr "Ðови коментари"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "ОтбелÑзване на вÑички като прочетени"
@@ -1524,38 +1712,38 @@ msgstr "ОтбелÑзване на вÑички като прочетени"
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "ИзтеглÑне"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1563,70 +1751,70 @@ msgstr ""
msgid "Created"
msgstr "Създадено"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "Файл PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Файлов формат"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1640,6 +1828,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1650,6 +1864,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1659,6 +1881,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr "ПоÑледни 10 уÑпешни качваниÑ"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1673,7 +1899,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1699,6 +1925,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1948,10 +2178,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1979,17 +2205,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "ДобавÑне на коментар"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "ДобавÑне на коментара"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Добавено"
@@ -2061,12 +2287,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Преглед на коментара"
@@ -2181,6 +2407,14 @@ msgstr ""
msgid "Add to a collection"
msgstr "ДобавÑне към колекциÑ"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2217,6 +2451,10 @@ msgstr "по-ново"
msgid "older"
msgstr "по-Ñтаро"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "МеÑтоположение"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2225,38 +2463,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Опа!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Възникна грешка"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Ðеправилна заÑвка"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "ДейÑтвието не е позволено"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2324,69 +2562,69 @@ msgstr "Може да ползвате\n <a href=\"http://d
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Коментарът ви е публикуван."
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "ТрÑбва да изберете или добавите колекциÑ"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" вече е в колекциÑта \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" е добавено към колекциÑта \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Изтрихте Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ колекциÑта."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Изтрихте колекциÑта \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 23315c8d..00000000
--- a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index e3db748e..00000000
--- a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1852 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# adriagm <adria@fsfe.org>, 2014
-# Al fred <devaleitzer@aim.com>, 2011
-# Al fred <devaleitzer@aim.com>, 2011
-# emwa goldwoman, 2014
-# Enric Morales <transifex@enric.me>, 2014
-# Albert Casals <skarbat@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-06-05 16:43+0000\n"
-"Last-Translator: emwa goldwoman\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/mediagoblin/language/ca/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: ca\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Ho sentim, el registre està desactivat en aquest cas."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "Ho sentim, no és possible avisar en aquest cas."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "No es permet l'autenticació en aquesta instància."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Nom d'usuari o adreça de correu incorrecte"
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Aquest camp no permet introduir adreces de correu"
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Aquest camp necessita una adreça de correu"
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Lamentablement aquest usuari ja existeix."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Perdó, ja existeix un usuari amb aquesta adreça de correu."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "La clau de verificació o l'identificador d'usuari és incorrecte."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Ja s'ha verificat la vostra adreça electrònica. Ara podeu entrar, editar el vostre perfil i penjar imatge!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "La clau de verificació o la identificació de l'usuari no són correctes."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Has d'estar conectat per saber a qui hem d'enviar el correu!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Ja has verificat la teva adreça de correu!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Torna'm a enviar el correu de verificació"
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Títol"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Descripció d'aquest treball."
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Pots utilitzar⎠<a href=\"http://daringfireball.net/projects/markdown/basics\">⎠Markdown</a> per donar-li format"
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Etiquetes"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Separa els tags amb comes."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Fitxa"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "La fitxa no pot ser buida"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "El títol de l'adreça d'aquest mitjà. Normalment no necessites modificar això."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Llicència"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Biografia"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Lloc web"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Aquesta adreça conté errors"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Envia'm correu quan d'altres comentin al meu mitjà"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Habiliteu les notificacions internes d'esdeveniments."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Llicència per defecte"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Aquesta serà la vostra llicència per defecte en els formularis de carregada d'arxius."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "El títol no pot ser buit"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Descripció d'aquesta col.lecció"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "La part del títol de l'adreça d'aquesta col.lecció. Normalment no cal que canviis això."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Contrasenya antiga"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Introdueix la teva contrasenya antiga per comprovar que aquest compte és teu."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Nova contrasenya"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Nova adreça de correu"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Contrasenya"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Introduïu la vostra contrasenya d'aquest compte"
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "Ja existeix una entrada amb aquesta fitxa per aquest usuari"
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Esteu editant fitxers d'un altre usuari. Aneu amb compte."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "S'ha adjuntat %s correctament."
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Només podeu editar el vostre perfil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Esteu editant el perfil d'un usuari. Aneu amb compte"
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Els canvis al perfil s'han guardat"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Els detalls del compte s'han guardat"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Heu de confirmar l'eliminació del vostre compte."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Ja tens una col.lecció anomenada \"%s\"!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "Ja existeix una col·lecció d'aquest usuari sota aquesta fitxa"
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Estas editant la col.lecció d'un altre usuari. Prossegueix amb cautela."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "S'ha verificat la vostra adreça de correu"
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Contrasenya errònia"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "No es pot enllaçar el tema... no hi ha tema establert\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "No hi ha un directori de recursos per a aquest tema\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Tot i així, l'enllaç antic al directori s'ha trobat; eliminat.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "No s'ha pogut enllaçar \"%s\" perquè hi ha un fitxer, que no és un enllaç, amb el mateix nom.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "S'ha omès \"%s\" perquè ja està llest.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "S'ha trobat un enllaç antic per a \"%s\" i s'ha eliminat.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "No s'ha trobat la galeta CSRF. Potser ha estat blocada.<br/>Assegureu-vos de permetre les galetes d'aquest domini."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Ho sento, no puc manegar aquest tipus d'arxiu :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "No s'ha pogut executar unoconv. Comproveu el registre d'errors."
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "La transformació del vídeo ha fallat"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Treure privilegi"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Feu fora l'usuari"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Envieu un missatge a l'usuari"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Esborreu el comentari"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "Fareu fora l'usuari fins:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "Per què heu fet fora aquest usuari?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Quina acció heu près per solucionar aquest incident?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Quins privilegis vols treure?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Alerta de "
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "comentat al teu post"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Us heu subscrit als comentaris de %s."
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Ja no rebreu més notificacions de comentaris de %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Heu de donar una oauth_token."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "No s'ha trobat un testimoni de petició."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "Ho sentim, la mida del fitxer és massa gran."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Ho sentim, pujant aquest fitxer assolireu el vostre límit de pujada."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Ho sentim, hey assolit el límit de pujada."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Nom d'usuari"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Adreça electrònica"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Nom d'usuari o adreça de correu"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Recorda'm"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Nom d'usuari o correu"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Si aquesta adreça de correu és correcta, s'ha enviat un missatge amb instruccions per canviar la vostra contrasenya"
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "No s'ha trobat cap usuari amb aquest nom."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "S'ha enviat un correu amb instruccions de com cambiar la teva contrasenya"
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "No hem pogut enviar el correu de recuperació de contrasenya perquè el teu nom d'usuari és inactiu o bé l'adreça electrònica del teu compte no ha sigut verificada."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "L'identificador d'usuari és incorrecte."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Ara et pots conectar amb la teva nova contrasenya."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "Ja no sou un usuari actiu. SI us plau contacteu amb l'administrador del sistema si voleu reactivar el vostre compte."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "S'ha canviat l'adreça de correu correctament"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Estableix la teva nova contrasenya"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Establir contrasenya"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Modificant la contrasenya de %(username)s."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Desa"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Encara no teniu un compte?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Creeu-ne un aquí!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Canvieu la vostra contrasenya"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Recuperar contrasenya"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Enviar instruccions"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Has oblidat la teva contrasenya?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Ubicació"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Veure a <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "Identifiqueu-vos per crear un compte!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Permetre"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Denegar"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Nom"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "El nom del client OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Descripció"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Això serà visiable a usuaris que permetin que la teva aplicació\n s'autentifiqui com a ells."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Tipus"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Confidencial</strong> - El client pot\n fer peticions a la instància GNU MediaGoblin que no pot ésser\n interceptada per l'agent d'usuari (el client a la part servidor).<br />\n <strong>Public</strong> - El client no pot fer peticions \n confidencials a la instància GNU MediaGoblin (la part \n client JavaScript)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "Redireccionar URI "
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "La URI de redirecció per les aplicacions, aquest camp\n és <strong>requeriment</strong> per els clients públics."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Aquest camp és requeriment per a clients públics"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "El client {0} ha sigut enregistrat!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Connexions de clients OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Els vostres clients OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Afegir"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Ja hi ha un compte registrat amb aquesta OpenID."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "No s'ha pogut trobar aquest servidor d'OpenID"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "No s'ha trobat un servei d'OpenID per a %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Ha fallat la verificació de %s: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "S'ha cancel·lat la verificació"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "S'ha desat el vostre localitzador d'OpenID."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "No podeu eliminar el vostre únic localitzador d'OpenID sense haver definit una contrasenya"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Aquest OpenID no està registrat amb aquest compte"
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "S'ha eliminat l'OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Afegeix un OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Elimina un OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Esborrar"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenIDs"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Entreu"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Hi ha hagut un error en l'inici de sessió"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "Inicieu una sessió per crear un compte"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "O entreu amb una contrasenya."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "O entreu amb un OpenID."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "O registreu-vos amb un OpenID."
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Ho sentim, ja hi ha un compte registrat per aquest correu de Persona."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "L'adreça de correu de Persona s'ha eliminat satisfactòriament."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "No podeu eliminar només l'adreça de Persona si no li heu definit una contrasenya."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Aquesta adreça de correu de Persona no està registrada a aquest compte."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Disculpeu, ja s'ha registrat un compte de Persona amb aquesta adreça de correu."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "La vostra adreça de Persona s'ha desat satisfactòriament."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Esborreu una adreça de correu de Persona."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Afegiu una adreça de correu de Persona."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "de Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "O inicieu la sessió amb Persona!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "O registreu-vos amb Persona!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Aquest tipus de fitxer no és vàlid."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Ha fallat la còpia al magatzem públic."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "No s'ha trobat cap fitxer adient per processar."
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Mida màxima del fitxer: {0} Mb"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Fitxer"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Podeu usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> per a formatar el text."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Heu d'escollir un fitxer."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Visca! S'ha enviat!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "S'ha afegit la col.leccio \"%s\"!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Heu estat expulsat."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Imatge d'un goblin fent exercici"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Heu estat expulsat"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "fins %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "indefinidament"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Verifica el teu correu electrònic"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "surt"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "Compte de <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Modificar els ajustaments del compte"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Quadre de processament de fitxers"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Surt"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Tots els fitxers"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Crea una nova col·lecció"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr "Tauler d'administració de l'usuari"
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr "Tauler d'informes reportats de l'usuari"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Mitjans més recents"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorització"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autoritzeu"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Heu iniciat sessió com a"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Voleu autoritzar"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "una aplicació desconeguda"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "per accedir al vostre compte?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Les aplicacions amb accés al vostre compte poden:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Publicar nout mitjà com a tu"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Veure la vostra informació (p. ex. perfil, mitjan"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Canvieu la vostra informació"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Autorització finalitzada"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Autorització completa"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copieu i enganxeu això al vostre client:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Creeu un compte!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Crea"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Hola %(username)s,\n\nper activar el vostre compte de GNU MediaGoblin account, obriu aquest enllaç\namb el vostre navegador:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Funciona amb <a href=\"http://mediagoblin.org/\" title='versió de %(version)s>MediaGoblin</a>, un projecte de <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Alliberat segons la <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Codi font</a> disponible."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "Condicions del servei"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Explorar"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Hola, una benvinguda al MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "El lloc esta usant <a href=\"http://mediagoblin.org\">MediaGoblin</a>, una gran i extraordinària peça de software per allotjar mitjans."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Per afegir el teu propi mitjà, col.locar comentaris, i més, pots conectar-te amb el teu compte MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "No en tens una encara? Es fàcil!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n>Creeu un compte a aquest lloc</a>\no"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Prepareu MediaGoblin al vostre propi servidor</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Logo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Editant afegits per a %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Fitxers adjunts"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Afegeix un fitxer adjunt"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Cancel·la"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Desa els canvis"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Canviant l'adreça de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Confirmeu l'eliminació de l'usuari %(user_name)s i els seus continguts."
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Elimina el compte"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Esborrar permanentment"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Edició de %(media_title)s "
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Modificant els detalls del compte de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Elimina el meu compte"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Adreça de correu"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Editant %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "S'està editant el perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Hola,\n\nhem volgut verificar que ets %(username)s. Si és el cas, feu clic a l'enllaç següent per tal de verificar la vostra nova adreça de correu.\n\n%(verification_url)s\n\nSi no sou %(username)s o no autoritzeu aquest canvi d'adreça, podeu ignorar aquest correu."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Nous comentaris"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "Fa %(formatted_time)s"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Marqueu-los tots com a llegits"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Mitjà marcat amb: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Descarregar"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Ho sento, aquest audiothis àudio no funcionarà perque \n »el teu navegador web no contempla suport d'àudio \n »HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Pots obtenir un navegador web modern que \n »podrà reproduir l'àudio, a <a href=\"http://getfirefox.com\">\n » http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Arxiu original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "Arxiu WebM (Vorbis codec)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Creat"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imatge per %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "Fitxer PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspectiva."
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Davant"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Amunt"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Costat"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Descarrega el model"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Format del fitxer"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Alçada de l'objecte"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Aquest vídeo no funciona perquè\nel vostre navegador web no soporta\nvídeos HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Publiqueu nou contingut com a vos"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "Arxiu WebM (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Aqui pots seguir l'estat del mitjà que s'està processant a aquesta instància."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "S'està processant el fitxer"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "No s'està processant cap mitjà"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "No s'han pogut penjar els següents fitxers:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Sense entrades fallades!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Les últimes 10 pujades correctes"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Encara no hi ha entrades processades!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr "Ho sento, no s'ha trobat cap informe."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr "Torneu al Tauler de Reportar informes."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Informeu-ne"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Comentari reportat"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr "\n S'HA ELIMINAT EL CONTINGUT DE\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n \n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr "Solucioneu-ho"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr "Solucioneu aquesta notificació"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr "Estat"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr "SOLUCIONAT"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr "No podeu dur a emprendre accions contra un administrador"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr "Tauler de notificacions reportades"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Quan s'ha reportat"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr "Reportat per"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Motiu"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\n Comment Report #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr "No s'ha trobat cap informe obert."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr "Informes reportats tancats"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr "Solucionat"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr "Acció presa"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr "\n Informe reportat #%(report_id)s tancat.\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "No s'ha trobat cap informe reportats tancat."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr "Tauler d'usuari"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr "Usuaris actius"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr "Data d'incorporació"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr "número de comentaris publicats"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "No hem trobat cap usuari."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Afegir a la col.lecció"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Afegeix el teu mitjà"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (la col.lecció de %(username)s)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s per a <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Editar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Realment vols esborrar %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Relment eliminar %(media_title)s de %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Eliminar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Les col·leccions de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Les col·leccions de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Hola %(username)s,\n%(comment_author)s ha comentat el teu post (%(comment_url)s) a %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Mitjà de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Mitjans de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■Navegant mitjà per a <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Afegeix un comentari"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Afegir aquest comentari"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Previsualització del comentari"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Afegit"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Afegeix “%(media_title)s†a una col·lecció"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Afegir una nova col.lecció"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Aquí pots seguir l'estat del mitjà que s'està processant per la teva galeria"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Les teves 10 últimes pujades correctes"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr "Reporteu aquest comentari."
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\n â– Publicat per <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr "Reporteu el fitxer"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Aqui hi ha un espai per explicar de tu als demés"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Edita el perfil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Aquest usuari encara no ha escrit res al seu perfil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Navega les col·leccions"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Mostra tots els mitjans de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Aqui és on apareixerà el teu mitjà, però sembla que encara no hi has afegit res."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Sembla que no hi ha cap mitjà aqui encara..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Cal que verifiqueu l'adreça electrònica"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Gairebé esteu! Tan sols falta que activeu el vostre compte"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Us hauria d'arribar un correu amb les instruccions per a fer-ho."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Per si no hi fos:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Torna'm a enviar el correu de verificació"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Algú ja ha registrat un compte amb aquest nom d'usuari, però encara l'ha d'activar."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Si sou aquest usuari però heu perdut el correu de verificació, podeu <a href=\"%(login_url)s\">entrar</a> i tornar-lo a enviar."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(elimina)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Afegit a la col·lecció el"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Afegeix a la col·lecció"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "Icona RSS"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Canal Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Tots els drets reservats"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Més nou"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Més antic →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Anar a la pàgina:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "més nou"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "més antic"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr "Informar mitjà"
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Etiquetat com"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "No s'ha pogut llegir l'arxiu d'imatge"
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Ups!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "S'ha trobat un error"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Petició incorrecta"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "La petició enviada al servidor no és vàlida. Si us plau, reviseu-la."
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Operació no permesa"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "David, no et puc deixar fer això!</p><p>Has intentat fer alguna cosa que no se't permet fer... com eliminar, una altra vegada, tots els comptes!"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "No s'ha trobat una pàgina a aquesta adreça.</p><p>Potser ha estat eliminada o s'ha canviat de lloc."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "any"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "mes"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "setmana"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "dia"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hora"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minut"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Comenta"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Podeu usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> per a formatar el text."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Estic segur que vull esborrar això"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Estic segur que vull esborrar aquest element de la col.lecció"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Col·lecció"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Sel.leccionar --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Incluir una nota"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Podeu usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> per a formatar el text."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "Raó per informar"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Els comentaris estan desactivats."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Uups, el teu comentari era buit."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "El teu comentari s'ha publicat!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Si et plau, comprova les teves entrades i intenta-ho de nou."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Has de sel.leccionar o afegir una col.lecció"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" ja és a la col.lecció \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" afegir a la col.lecció \"%s\""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Has esborrat el mitjà"
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "El mitjà no s'ha esborrat perque no has marcat que n'estiguessis segur."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Ets a punt d'esborrar el mitjà d'un altre usuari. Prossegueix amb cautela."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Has esborrat l'element de la col.lecció"
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "L'element no s'ha eliminat perque no has marcat que n'estiguessis segur."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Ets a punt d'esborrar un element de la col.lecció d'un altre usuari. Prossegueix amb cautela."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Has esborrat la col.lecció \"%s\""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "La col.lecció no s'ha esborrat perquè no has marcat que n'estiguessis segur."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Ets a punt d'esborrar la col.lecció d'un altre usuari. Prossegueix amb cautela."
diff --git a/mediagoblin/i18n/ca/mediagoblin.po b/mediagoblin/i18n/ca/mediagoblin.po
new file mode 100644
index 00000000..640a993b
--- /dev/null
+++ b/mediagoblin/i18n/ca/mediagoblin.po
@@ -0,0 +1,2659 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# adriagm <adria@fsfe.org>, 2014
+# Al fred <devaleitzer@aim.com>, 2011
+# Al fred <devaleitzer@aim.com>, 2011
+# emwa goldwoman, 2014
+# Enric Morales <transifex@enric.me>, 2014
+# Albert Casals <skarbat@gmail.com>, 2012
+# Adrià <adria@fsfe.org>, 2015.
+# larjona <larjona@larjona.net>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-05-12 09:18+0000\n"
+"Last-Translator: larjona <larjona@larjona.net>\n"
+"Language-Team: Catalan "
+"(http://www.transifex.com/projects/p/mediagoblin/language/ca/)\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1431422339.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Ho sentim, el registre està desactivat en aquesta instància."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Ho sentim, no és possible avisar en aquest cas."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "No es permet l'autenticació en aquesta instància."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Nom d'usuari o adreça de correu incorrecte"
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Aquest camp no permet introduir adreces de correu"
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Aquest camp necessita una adreça de correu"
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Lamentablement aquest usuari ja existeix."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Perdó, ja existeix un usuari amb aquesta adreça de correu."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "La clau de verificació o l'identificador d'usuari és incorrecte."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Ja s'ha verificat la vostra adreça electrònica. Ara podeu entrar, editar el vostre perfil i penjar imatge!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "La clau de verificació o la identificació de l'usuari no són correctes."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Has d'estar conectat per saber a qui hem d'enviar el correu!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Ja has verificat la teva adreça de correu!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Torna'm a enviar el correu de verificació"
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} ha afegit {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} ha afegit {object} a {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} ha creat {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} ha eliminat {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "A {username} ja no li agrada {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} ha marcat com a preferit {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} ha seguit {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "A {username} li ha agradat {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} ha publicat {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} ha publicat {object} a {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} ha compartit {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} ha tret dels preferits {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} ha deixat de seguir {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "A {username} ja no li agrada {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} ha deixat de compartir {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} ha actualitzat {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} ha etiquetat {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Títol"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Descripció d'aquest treball."
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+#, fuzzy
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+"Pots utilitzar\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> per donar-li format."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Etiquetes"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Separa els tags amb comes."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Fitxa"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "La fitxa no pot ser buida"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "El títol de l'adreça d'aquest mitjà. Normalment no necessites modificar això."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Llicència"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Biografia"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Lloc web"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Aquesta adreça conté errors"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Envia'm correu quan d'altres comentin al meu mitjà"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Habiliteu les notificacions internes d'esdeveniments."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Llicència per defecte"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Aquesta serà la vostra llicència per defecte en els formularis de carregada d'arxius."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "El títol no pot ser buit"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Descripció d'aquesta col.lecció"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "La part del títol de l'adreça d'aquesta col.lecció. Normalment no cal que canviis això."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Contrasenya antiga"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Introdueix la teva contrasenya antiga per comprovar que aquest compte és teu."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nova contrasenya"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Nova adreça de correu"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Contrasenya"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Introduïu la vostra contrasenya d'aquest compte"
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identificador"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Valor"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Ja existeix una entrada amb aquesta fitxa per aquest usuari"
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Esteu editant fitxers d'un altre usuari. Aneu amb compte."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "S'ha adjuntat %s correctament."
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Només podeu editar el vostre perfil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Esteu editant el perfil d'un usuari. Aneu amb compte"
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Els canvis al perfil s'han guardat"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Els detalls del compte s'han guardat"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "S'ha desautoritzat l'aplicació"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Heu de confirmar l'eliminació del vostre compte."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Ja tens una col.lecció anomenada \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "Ja existeix una col·lecció d'aquest usuari sota aquesta fitxa"
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Estas editant la col.lecció d'un altre usuari. Prossegueix amb cautela."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "S'ha verificat la vostra adreça de correu"
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Contrasenya errònia"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "No es pot enllaçar el tema... no hi ha tema establert\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "No hi ha un directori de recursos per a aquest tema\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Tot i així, l'enllaç antic al directori s'ha trobat; eliminat.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "No s'ha pogut enllaçar \"%s\": %s existeix i no és un enllaç\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "S'ha omès \"%s\" perquè ja està llest.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "S'ha trobat un enllaç antic per a \"%s\" i s'ha eliminat.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+"Per a més informació sobre com executar aquest\n"
+"guió correctament (i com donar format a l'arxiu csv de meta-dades), llegiu\n"
+"la página de documentació de Mediagoblin sobre la càrrega d'arxius des de la "
+"línia\n"
+"de comandes <http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Nombre del usuario al cual le pertenecen éstos contenidos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Ruta al archivo csv que contiene la información de metadatos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Ho sentim, no existeix cap usuari anomenat '{username}'"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "No s'ha trobat l'arxiu a {path}. Useu el paràmetre -h per a ajuda"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "No s'ha trobat la galeta CSRF. Potser ha estat blocada.<br/>Assegureu-vos de permetre les galetes d'aquest domini."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Ho sento, no puc manegar aquest tipus d'arxiu :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Descripció"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Estic segur que vull esborrar això"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Visca! S'ha enviat!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "El mitjà no s'ha esborrat perque no has marcat que n'estiguessis segur."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Editar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Esborrar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Realment vols esborrar %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Esborrar permanentment"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Afegir"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "No s'ha pogut executar unoconv. Comproveu el registre d'errors."
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "La transformació del vídeo ha fallat"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Treure privilegi"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Feu fora l'usuari"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Envieu un missatge a l'usuari"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Esborreu el comentari"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "Fareu fora l'usuari fins:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "Per què heu fet fora aquest usuari?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Quina acció heu près per solucionar aquest incident?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Quins privilegis vols treure?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "indefinidament"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Alerta de "
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "comentat al teu post"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Us heu subscrit als comentaris de %s."
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Ja no rebreu més notificacions de comentaris de %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Heu de donar una oauth_token."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "No s'ha trobat un testimoni de petició."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Ho sentim, la mida del fitxer és massa gran."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "Ho sentim, pujant aquest fitxer assolireu el vostre límit de pujada."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Ho sentim, hey assolit el límit de pujada."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Mitjans més recents"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Adreça electrònica"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Nom d'usuari o adreça de correu"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Recorda'm"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Nom d'usuari o correu"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Si aquesta adreça de correu és correcta, s'ha enviat un missatge amb instruccions per canviar la vostra contrasenya"
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "No s'ha trobat cap usuari amb aquest nom."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "S'ha enviat un correu amb instruccions de com cambiar la teva contrasenya"
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "No hem pogut enviar el correu de recuperació de contrasenya perquè el teu nom d'usuari és inactiu o bé l'adreça electrònica del teu compte no ha sigut verificada."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "L'identificador d'usuari és incorrecte."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Ara et pots conectar amb la teva nova contrasenya."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "Ja no sou un usuari actiu. SI us plau contacteu amb l'administrador del sistema si voleu reactivar el vostre compte."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "S'ha canviat l'adreça de correu correctament"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Estableix la teva nova contrasenya"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Establir contrasenya"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Modificant la contrasenya de %(username)s."
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Desa"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "Encara no teniu un compte?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Creeu-ne un aquí!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Canvieu la vostra contrasenya"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Recuperar contrasenya"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Enviar instruccions"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Has oblidat la teva contrasenya?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Veure a <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "Identifiqueu-vos per crear un compte!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permetre"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Denegar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nom"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "El nom del client OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Això serà visiable a usuaris que permetin que la teva aplicació\n s'autentifiqui com a ells."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Tipus"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Confidencial</strong> - El client pot\n fer peticions a la instància GNU MediaGoblin que no pot ésser\n interceptada per l'agent d'usuari (el client a la part servidor).<br />\n <strong>Public</strong> - El client no pot fer peticions \n confidencials a la instància GNU MediaGoblin (la part \n client JavaScript)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "Redireccionar URI "
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "La URI de redirecció per les aplicacions, aquest camp\n és <strong>requeriment</strong> per els clients públics."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Aquest camp és requeriment per a clients públics"
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "El client {0} ha sigut enregistrat!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Connexions de clients OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Els vostres clients OAuth"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Ja hi ha un compte registrat amb aquesta OpenID."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "No s'ha pogut trobar aquest servidor d'OpenID"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "No s'ha trobat un servei d'OpenID per a %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Ha fallat la verificació de %s: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "S'ha cancel·lat la verificació"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "S'ha desat el vostre localitzador d'OpenID."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "No podeu eliminar el vostre únic localitzador d'OpenID sense haver definit una contrasenya"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Aquest OpenID no està registrat amb aquest compte"
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "S'ha eliminat l'OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Afegeix un OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Elimina un OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenIDs"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Entreu"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Hi ha hagut un error en l'inici de sessió"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "Inicieu una sessió per crear un compte"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "O entreu amb una contrasenya."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "O entreu amb un OpenID."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "O registreu-vos amb un OpenID."
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Ho sentim, ja hi ha un compte registrat per aquest correu de Persona."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "L'adreça de correu de Persona s'ha eliminat satisfactòriament."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "No podeu eliminar només l'adreça de Persona si no li heu definit una contrasenya."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Aquesta adreça de correu de Persona no està registrada a aquest compte."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Disculpeu, ja s'ha registrat un compte de Persona amb aquesta adreça de correu."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "La vostra adreça de Persona s'ha desat satisfactòriament."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Esborreu una adreça de correu de Persona."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Afegiu una adreça de correu de Persona."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "de Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "O inicieu la sessió amb Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "O registreu-vos amb Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Aquest tipus de fitxer no és vàlid."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Ha fallat la còpia al magatzem públic."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "No s'ha trobat cap fitxer adient per processar."
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Mida màxima del fitxer: {0} Mb"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Fitxer"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Podeu usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> per a formatar el text."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Heu d'escollir un fitxer."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "S'ha afegit la col.leccio \"%s\"!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Heu estat expulsat."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imatge d'un goblin fent exercici"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Heu estat expulsat"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "fins %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Verifica el teu correu electrònic"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "surt"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "Compte de <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Modificar els ajustaments del compte"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Quadre de processament de fitxers"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Surt"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Tots els fitxers"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Crea una nova col·lecció"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Tauler d'administració de l'usuari"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Tauler d'informes reportats de l'usuari"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorització"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autoritzeu"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Heu iniciat sessió com a"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Voleu autoritzar"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "una aplicació desconeguda"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "per accedir al vostre compte?"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Les aplicacions amb accés al vostre compte poden:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Publicar nout mitjà com a tu"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Veure la vostra informació (p. ex. perfil, mitjan"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Canvieu la vostra informació"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorització finalitzada"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorització completa"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Creeu un compte!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Crea"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Hola %(username)s,\n\nper activar el vostre compte de GNU MediaGoblin account, obriu aquest enllaç\namb el vostre navegador:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Funciona amb <a href=\"http://mediagoblin.org/\" title='versió de %(version)s>MediaGoblin</a>, un projecte de <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Alliberat segons la <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Codi font</a> disponible."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Condicions del servei"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Explorar"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Hola, una benvinguda al MediaGoblin!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "El lloc esta usant <a href=\"http://mediagoblin.org\">MediaGoblin</a>, una gran i extraordinària peça de software per allotjar mitjans."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Per afegir el teu propi mitjà, col.locar comentaris, i més, pots conectar-te amb el teu compte MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "No en tens una encara? Es fàcil!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logo de MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Editant afegits per a %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Fitxers adjunts"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Afegeix un fitxer adjunt"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Desa els canvis"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Canviant l'adreça de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "Fa %(formatted_time)s"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Confirmeu l'eliminació de l'usuari %(user_name)s i els seus continguts."
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Elimina el compte"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Edició de %(media_title)s "
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "Modificant els detalls del compte de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Elimina el meu compte"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Adreça de correu"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Editant %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "S'està editant el perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+"Hola,\n"
+"\n"
+"hem volgut verificar que ets %(username)s. Si és el cas, feu clic a l'enllaç "
+"següent per tal de verificar la vostra nova adreça de correu.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"Si no sou %(username)s o no autoritzeu aquest canvi d'adreça,\n"
+"podeu ignorar aquest correu."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Nous comentaris"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Marqueu-los tots com a llegits"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Mitjà marcat amb: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Descarregar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Arxiu original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "Arxiu WebM (Vorbis codec)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Creat"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imatge per %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "Fitxer PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspectiva."
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Davant"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Amunt"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Costat"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Descarrega el model"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Format del fitxer"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Alçada de l'objecte"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Aquest vídeo no funciona perquè\nel vostre navegador web no soporta\nvídeos HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Publiqueu nou contingut com a vos"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "Arxiu WebM (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Aqui pots seguir l'estat del mitjà que s'està processant a aquesta instància."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "S'està processant el fitxer"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "No s'està processant cap mitjà"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "No s'han pogut penjar els següents fitxers:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Sense entrades fallades!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Les últimes 10 pujades correctes"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Encara no hi ha entrades processades!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Ho sento, no s'ha trobat cap informe."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Torneu al Tauler de Reportar informes."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Informeu-ne"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Comentari reportat"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr "\n S'HA ELIMINAT EL CONTINGUT DE\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n \n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Solucioneu-ho"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Solucioneu aquesta notificació"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Estat"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "SOLUCIONAT"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "No podeu dur a emprendre accions contra un administrador"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Tauler de notificacions reportades"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Quan s'ha reportat"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Reportat per"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Motiu"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr "\n Comment Report #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "No s'ha trobat cap informe obert."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Informes reportats tancats"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Solucionat"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Acció presa"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr "\n Informe reportat #%(report_id)s tancat.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "No s'ha trobat cap informe reportats tancat."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Cal que verifiqueu l'adreça electrònica"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Aquest usuari encara no ha escrit res al seu perfil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Edita el perfil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Navega les col·leccions"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Tauler d'usuari"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Usuaris actius"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Data d'incorporació"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "número de comentaris publicats"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "No hem trobat cap usuari."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Afegir a la col.lecció"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Afegeix el teu mitjà"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Afegeix un comentari"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Afegir aquest comentari"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Afegit"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (la col.lecció de %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s per a <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Relment eliminar %(media_title)s de %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Eliminar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Les col·leccions de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Les col·leccions de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Hola %(username)s,\n%(comment_author)s ha comentat el teu post (%(comment_url)s) a %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Mitjà de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Mitjans de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Navegant mitjà per a <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Previsualització del comentari"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Afegeix “%(media_title)s†a una col·lecció"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Afegir una nova col.lecció"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Aquí pots seguir l'estat del mitjà que s'està processant per la teva galeria"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Les teves 10 últimes pujades correctes"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Reporteu aquest comentari."
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\n â– Publicat per <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Reporteu el fitxer"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Aqui hi ha un espai per explicar de tu als demés"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Mostra tots els mitjans de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Aqui és on apareixerà el teu mitjà, però sembla que encara no hi has afegit res."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Sembla que no hi ha cap mitjà aqui encara..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Gairebé esteu! Tan sols falta que activeu el vostre compte"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Us hauria d'arribar un correu amb les instruccions per a fer-ho."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "Per si no hi fos:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Torna'm a enviar el correu de verificació"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Algú ja ha registrat un compte amb aquest nom d'usuari, però encara l'ha d'activar."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Si sou aquest usuari però heu perdut el correu de verificació, podeu <a href=\"%(login_url)s\">entrar</a> i tornar-lo a enviar."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(elimina)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Afegit a la col·lecció el"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Afegeix a la col·lecció"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "Icona RSS"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Canal Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Tots els drets reservats"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Més nou"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Més antic →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Anar a la pàgina:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "més nou"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "més antic"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Ubicació"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Informar mitjà"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Etiquetat com"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "No s'ha pogut llegir l'arxiu d'imatge"
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Ups!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "S'ha trobat un error"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Petició incorrecta"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "La petició enviada al servidor no és vàlida. Si us plau, reviseu-la."
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Operació no permesa"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "David, no et puc deixar fer això!</p><p>Has intentat fer alguna cosa que no se't permet fer... com eliminar, una altra vegada, tots els comptes!"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "No s'ha trobat una pàgina a aquesta adreça.</p><p>Potser ha estat eliminada o s'ha canviat de lloc."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "any"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "mes"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "setmana"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "dia"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hora"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minut"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comenta"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Podeu usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> per a formatar el text."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Estic segur que vull esborrar aquest element de la col.lecció"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Col·lecció"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Sel.leccionar --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Incluir una nota"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Podeu usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> per a formatar el text."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Raó per informar"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Els comentaris estan desactivats."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Uups, el teu comentari era buit."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "El teu comentari s'ha publicat!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Si et plau, comprova les teves entrades i intenta-ho de nou."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Has de sel.leccionar o afegir una col.lecció"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" ja és a la col.lecció \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" afegir a la col.lecció \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Has esborrat el mitjà"
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Ets a punt d'esborrar el mitjà d'un altre usuari. Prossegueix amb cautela."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Has esborrat l'element de la col.lecció"
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "L'element no s'ha eliminat perque no has marcat que n'estiguessis segur."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Ets a punt d'esborrar un element de la col.lecció d'un altre usuari. Prossegueix amb cautela."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Has esborrat la col.lecció \"%s\""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "La col.lecció no s'ha esborrat perquè no has marcat que n'estiguessis segur."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Ets a punt d'esborrar la col.lecció d'un altre usuari. Prossegueix amb cautela."
diff --git a/mediagoblin/i18n/ca@valencia/mediagoblin.po b/mediagoblin/i18n/ca@valencia/mediagoblin.po
new file mode 100644
index 00000000..e967794c
--- /dev/null
+++ b/mediagoblin/i18n/ca@valencia/mediagoblin.po
@@ -0,0 +1,2680 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-18 16:03-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: ca@valencia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+"Generated-By: Babel 1.3\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid "An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a "
+"password set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing"
+" the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid "Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid "An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to"
+" be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were "
+"sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 3321b39e..00000000
--- a/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index b1e8df21..00000000
--- a/mediagoblin/i18n/cs/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1848 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# digitaldreamer <digitaldreamer@email.cz>, 2014
-# Mirek2 <mazelm@gmail.com>, 2014
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-03-01 11:34+0000\n"
-"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/mediagoblin/language/cs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: cs\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Promiňte, na této instanci je možnost registrace vypnuta."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "Promiňte, nahlášení je na tomto serveru vypnuto."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Promiňte, autentikace je na této instanci vypnuta."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Neplatné uživatelské jméno nebo emailová adresa."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Do tohoto pole emailová adresa nepatří."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Toto pole vyžaduje emailovou adresu."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Omlouváme se, uživatel s tímto jménem už existuje."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Promiňte, uživatel s touto emailovou adresou již existuje."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "Chybný ověřovací klÃ­Ä nebo id užvatele."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Vaše emailová adresa byla ověřena. Nyní se můžete přihlásit, upravit si svůj profil, a nahrávat obrázky!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "Neplatný ověřovací klÃ­Ä nebo id uživatele"
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Napřed se musíte přihlásit, abychom věděli komu máme email poslat!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Svojí emailovou adresu máte již ověřenou!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Váš ověřovací email byl znovu odeslán."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Název"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Popis tohoto díla"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Můžete použít\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> pro formátování."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Štítky"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "OddÄ›lte Å¡títky Äárkami."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Krátký název"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "Krátký název nemůže být prázdný"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "Název, který je souÄástí adresy této tvorby. VÄ›tÅ¡inou není tÅ™eba ho mÄ›nit."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licence"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "O mnÄ›"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Webové stránky"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Tato adresa obsahuje chyby"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Poslat email vždy, když někdo napíše komentář k mým tvorbám"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Zasílat oznámení o událostech na tomto webu."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Oblíbená licence"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Toto bude vaše výchozí licence ve formuláři pro upload."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "Nadpis nesmí být prázdný"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Popis této sbírky"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "Název, který je souÄástí adresy této sbírky. VÄ›tÅ¡inou není tÅ™eba ho mÄ›nit."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Staré heslo"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Zadejte své staré heslo, abyste potvrdil(a), že vlastníte tento úÄet."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Nové heslo"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Nová emailová adresa"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Heslo"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Zadejte své heslo pro ověření, že jste majitelem tohoto úÄtu."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "U tohoto uživatele již existuje jiná tvorba s tímto krátkým názvem."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Upravujete tvorbu jiného uživatele. BuÄte opatrná/ý."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Přidali jste přílohu %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Editovat můžete jen svůj vlastní profil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Upravujete profil uživatele. BuÄte opatrná/ý."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Změny profilu uloženy"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Nastavení úÄtu uloženo"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Smazání vaÅ¡eho úÄtu je tÅ™eba potvrdit."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Už máte sbírku se jménem „%s“!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "U tohoto uživatele již existuje jiná sbírka s tímto krátkým názvem."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Upravujete sbírku dalšího uživatele. BuÄte opatrná/ý."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Vaše emailová adresa byla ověřena."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Špatné heslo"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Téma nelze propojit... žádné téma není nastaveno\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "Chybí adresář souborů k tomuto tématu.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Byl však nalezen odkaz na starý adresář; odstraňuji.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "Nepovedlo se odkázat na „%s“: %s existuje a symbolickým odkazem\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Přeskakuji \"%s\"; jež je nastaven.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Byl nalezen starý odkaz pro \"%s\"; odstraňuji.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "CSRF cookie není dostupné. Nejspíš je to důsledek blokování cookies v prohlížeÄi, nebo nÄ›co podobného.<br/>UjistÄ›te se, že je nastavování cookies povoleno pro tuto doménu."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Omlouvám se, nepodporuji tento typ souboru :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "unoconv nebylo možné spustit, zkontrolujte log"
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Transkódování videa selhalo"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Odejmout práva"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Udělit zákaz přístupu"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Poslat uživateli zprávu"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Smazat obsah"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "Uživatel bude mít zákaz do:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "ProÄ tomuto uživateli udÄ›lujete zákaz?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Jak chcete toto hlášení řešit?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Jaká práva odejmete?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Varování od"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "okomentoval(a) váš příspěvek"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Odebírám komentáře na %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Nebudou vám zasílána oznámení o komentářích na %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Je vyžadován oauth_token."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "Požadavek nemá token."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "Promiňte, soubor je příliš velký."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Promiňte, vložením tohoto souboru byste již pÅ™ekroÄili svůj datový limit."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Promiňte, již jste vyÄerpali svůj datový limit."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Uživatelské jméno"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Emailová adresa"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Uživatelské jméno nebo email"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Trvalé přihlášení"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Uživatelské jméno Äi email"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Pokud je tato emailová adresa (pozor na velká písmena!) zaregistrována, bude na ní odeslán email s instrukcemi jak si změnit heslo."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Nebyl nalezen nikdo s tímto uživatelským jménem."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Byl odeslán email s instrukcemi jak změnit heslo."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Email pro obnovení hesla nelze odeslat, protože vaše uživatelské jméno není aktivováno, nebo nebyla ověřena emailová adresa."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "Chybné id uživatele."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Můžete se nyní přihlásit se svým novým heslem."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "Nejste již aktivním uživatelem. Kontaktujte prosím administrátora serveru pro opÄ›tovnou aktivaci vaÅ¡eho úÄtu."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Vaše heslo bylo úspěšně změněno"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Nastavte své nové heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Nastavit heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Změna hesla uživatele %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Uložit"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "JeÅ¡tÄ› nemáte úÄet?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Vytvořte si ho zde!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Změňte si heslo."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Obnovit heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Poslat návod"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Zapoměl(a) jste své heslo?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Místo"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Zobrazit <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "PÅ™ihlaÅ¡te se pro vytvoÅ™ení nového úÄtu."
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Povolit"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Zakázat"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Jméno"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "Jméno klienta pro OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Popis"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Toto se uživatelům zobrazí, když budou povolovat\nvaší aplikaci, aby se přihlásila jejich jménem."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Typ"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Confidential</strong> - Klient dokáže posílat\nserver GNU MediaGoblin požadavky, které nemůžou být\nzachyceny na stranÄ› uživatele (napÅ™. běží na serveru).\n<strong>Public</strong> - Klient nemá možnost posílat\nna server GNU MediaGoblin důvÄ›rné požadavky (napÅ™. běží\nv JavaScriptu ve webovém prohlížeÄi)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "URI pro přesměrování"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "URI pro přesměrování aplikací, toto pole\nje <strong>vyžadováno</strong> pro veřejné klienty."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Toto pole je vyžadováno pro veřejné klienty"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Klient {0} byl zaregistrován!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Připojení klientů OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Vaši OAuth klienti"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Přidat"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Promiňte, pro toto OpenID je již úÄet zaregistrován."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "Promiňte, server pro OpenID nebyl nalezen"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "Nebyla nalezena žádná služba OpenID pro %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Ověřování %s selhalo: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Ověření bylo zrušeno"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "Vaše OpenID adresa byla úspěšně uložena."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Nemůžete smazat svou jedinou adresu OpenID pokud nemáte nastavené heslo"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Toto OpenID není k tomuto úÄtu registrováno."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "OpenID bylo úspěšně odstraněno."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Přidat OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Odstranit OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Smazat"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Přihlásit se"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Přihlášení selhalo!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "PÅ™ihlaÅ¡te se pro vytvoÅ™ení úÄtu!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Nebo se přihlašte heslem!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "Nebo se přihlašte pomocí OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "Nebo se zaregistrujte s OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Promiňte, pro tento email Persona je již úÄet zaregistrován."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "Emailová adresa Persona byla úspěšně odstraněna."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "Nemůžete odstranit svou jedinou emailovou adresu Persona pokud nemáte nastavené heslo."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Tato emailová adresa Persona není k tomuto úÄtu registrována."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Promiňte, na tuto emailovou adresu Persona je již úÄet registrován."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "Váš email Persona byl úspěšně uložen."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Smazat emailovou adresu Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Přidat emailovou adresu Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "Nebo se přihlašte pomocí Persony!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "Nebo se zaregistrujte s Personou!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Neplatný soubor pro tento typ tvorby."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Kopírování do veřejného uložiště selhalo."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "Přijatelný soubor ke zpracování nebyl nalezen"
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Maximální velikost souboru: {0} mb"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Soubor"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Můžete používat\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> pro formátování."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Musíte poskytnout soubor."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Jupí! Odesláno!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "Sbírka „%s“ přidána!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Byl vám udělen Zákaz."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Obrázek vystresovaného goblina"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Zákaz platí"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "do %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "trvale"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Ověřte svůj email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "odhlásit"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "ÚÄet <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "ZmÄ›nit nastavení úÄtu"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panel zpracování tvoreb"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Odhlásit"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Přidat tvorbu"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Vytvořit novou sbírku"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr "Panel pro správu uživatelů"
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr "Panel pro správu hlášení"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Nejnovější tvorba"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorizace"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autorizovat"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Jste přihlášen jako"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Přejete si autorizovat"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "neznámou aplikaci"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "pro přístup k vaÅ¡emu úÄtu?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Aplikace s přístupem k vaÅ¡em úÄtu může:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Vkládat tvorby vaším jménem"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Zobrazte si vaše údaje (např. profil, tvorbu apod.)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Měnit vaše informace"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Autorizace DokonÄena"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Autorizace Kompletní"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Toto zkopírujte a vložte do svého klienta:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "VytvoÅ™te si úÄet!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Vytvořit"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Zdravím, %(username)s,\n\nAbyste aktivoval(a) váš úÄet na GNU MediaGoblin, otevÅ™ete následující URL ve\nvaÅ¡em prohlížeÄi:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Na tomto serveru běží <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, projekt <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Vydáno pod licencí <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Zdrojový kód</a> je volně přístupný."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "Podmínky poskytovatele"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Prozkoumat"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Zdravíme, vítejte na stránkách projektu MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Na těchto stránkách běží <a href=\"http://mediagoblin.org\">MediaGoblin</a>, úžasný software pro hostování medií."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Abyste mohli nahrávat vlastní tvorby, psát komentáře, a jeÅ¡tÄ› víc, pÅ™ihlaÅ¡te se svým MediaGoblinovým úÄtem."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "Ještě ho nemáte? Je to jednoduché!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n>VytvoÅ™it úÄet na tomto webu</a>\nnebo"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Nastavit MediaGoblin na vlastním serveru</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Upravujete přílohy %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Přílohy"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Přiložit soubor"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Zrušit"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Uložit změny"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Měním email uživatele %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Opravdu smazat uživatele '%(user_name)s' a všechnu asociovanou tvorbu/komentáře?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Ano, skuteÄnÄ› chci smazat svůj úÄet"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Smazat navždy"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Upravujete %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "MÄ›níte nastavení úÄtu %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Smazat můj úÄet"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Email"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Editace %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Upravujete profil %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Ahoj,\n\nPotřebujeme ověřit, jestli jste %(username)s. Pokud ano,\nklikněte prosím na tento odkaz pro ověření vaší nové emailové adresy.\n\n%(verification_url)s\n\nPokud nejste %(username)s, nebo jste nežádali o změnu emailu, nemusíte\nsi tohoto emailu všímat."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Nové komentáře"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "před %(formatted_time)s"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "OznaÄit jako pÅ™eÄtené"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Tvorba se štítky: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Stáhnout"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Původní"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Promiňte, tento zvukový soubor nelze pÅ™ehrát\n\tprotože váš prohlížeÄ nepodporuje HTML5\n\taudio."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Můžete si stáhnout moderní prohlížeÄ, který \n\tumí pÅ™ehrávat tento typ zvuku, na <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Původní soubor"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "Soubor WebM (kodek Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Vytvořeno"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Obrázek %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "Soubor PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspektiva"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Zepředu"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Zvrchu"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Ze strany"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Stáhnout model"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Formát Souboru"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Výška Objektu"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Promiňte, toto video nelze pÅ™ehrát protože\nváš prohlížeÄ nepodporuje HTML5\nvideo."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Můžete si stáhnout moderní prohlížeÄ, který \n umí pÅ™ehrát toto video, na <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "Soubor WebM (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Zde můžete sledovat stav tvoreb zpracovávaných na této instanci."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Zpracovávané tvorby"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Žádné zpracovávané tvorby"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Tuto tvorbu se nepovedlo zpracovat:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Žádné záznamy o selhání!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Posledních 10 úspěšných uploadů"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Zatím tu nejsou žádné zpracované tvorby!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr "Promiňte, žádné takové hlášení nebylo nalezeno."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr "Návrat do Panelu Hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Nahlášený komentář"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr "\n■Nahlášené medium od uživatele <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr "\nOBSAH OD UŽIVATELE\n<a href=\"%(user_url)s\"> %(user_name)s</a>\nBYL SMAZÃN"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr "Vyřešit"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr "Vyřešit Toto Hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr "Stav"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr "VYŘEŠENO"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr "Nemáte oprávnění zasáhnout proti administrátorovi"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr "Panel hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr "\nZde můžete najít otevřená hlášení podaná uživateli."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr "Aktivní Podaná Hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr "Pachatel"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Datum Nahlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr "Ohlašovatel"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Důvod"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\nNahlášení Komentáře #%(report_id)s"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr "\nNahlášení Tvorby #%(report_id)s"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr "Nebyla nalezena žádná otevřená hlášení."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr "Uzavřená Hlášení"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr "Vyřešeno"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr "Přijaté Opatření"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr "\nUzavřené hlášení #%(report_id)s"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "Nebyla nalezena žádná uzavřená hlášení."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr "Panel uživatelů"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr "\nZde můžete najít uživatele, abyste proti nim mohli podniknout příslušná opatření."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr "Aktivní Uživatelé"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr "Datum Registrace"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr "PoÄet vložených komentářů"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "Žádní uživatelé nebyli nalezeni."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Přidat sbírku"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Přidejte vaši tvorbu"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (sbírka uživatele %(username)s)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s od <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Upravit"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Opravdu smazat %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Opravdu odstranit %(media_title)s z %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Odstranit"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Sbírky uživatele %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Sbírky <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Zdravím, uživateli %(username)s,\n%(comment_author)s vložil(a) komentář k vašemu příspěvku (%(comment_url)s) na serveru %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Tvorba %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Tvorba <a href=\"%(user_url)s\">%(username)s</a> se štítkem <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Tvorba <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■Prohlížení tvoreb uživatele <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Přidat komentář"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Přidat tento komentář"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Náhled Komentáře"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Přidáno"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Přidat “%(media_title)s†do sbírky"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Přidat novou sbírku"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Zde můžete sledovat stav tvoreb, které jsou zpracovávány pro vaší galerii."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Vašich posledních 10 úspěšných uploadů"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr "<h2>Nahlásit</h2>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr "Nahlašuji tento Komentář"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr "Nahlašuji tuto Tvorbu"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\n ■Publikováno <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr "Nahlásit"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Profil %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Zde můžete ostatním říct něco o sobě."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Upravit profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Tento uživatel si (zatím) nevyplnil profil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Procházet sbírky"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Zobrazit všechnu tvorbu %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Zde se zobrazí tvorba, ale zatím jste nic nepřidal(a)."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Zdá se, že tu zatím žádná tvorba není..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Je třeba ověřit email"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Skoro hotovo! Váš úÄet musí jeÅ¡tÄ› být aktivován."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Za pár minut by vám měl přijít email s návodem, jak na to."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Pokud nepřijde:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Znovu zaslat ověřovací email"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "NÄ›kdo si zaregistroval úÄet s tímto uživatelským jménem, ale jeÅ¡tÄ› nebyl aktivován."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Pokud jste to vy, ale ztratili jste ověřovací email, můžete se <a href=\"%(login_url)s\">přihlásit</a> a odeslat jej znovu."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(odstranit)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Ve sbírce"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Přidat do sbírky"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "ikona kanálu"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "kanál Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Všechna práva vyhrazena"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Novější"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Starší →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Přejít na stránku:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "novější"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "starší"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr "Nahlásit tvorbu"
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Štítky"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Soubor obrázku nelze pÅ™eÄíst."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Jejda!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Došlo k chybě"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Špatný Požadavek"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "Požadavek zaslaný na tento server je neplatný, prosím zkontrolujte ho."
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Tato operace není dovolena"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "Promiň Dave, nemůžu ti dovolit to udělat!</p><p>Pokoušeli jste se použít funkci, ke které nemáte oprávnění."
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Zdá se, že na této adrese žádná stránka není. Omlouváme se!</p><p>Pokud jste si jistí, že tato adresa je správná, je možné, že stránka, kterou hledáte, byla přesunuta nebo smazána."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "rokem"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "měsícem"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "týdnem"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "dnem"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hodinou"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minutou"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Komentář"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Můžete používat <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> pro formátování."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Jsem si jist(a), že to chci smazat"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Jsem si jist(a), že chci odstranit tuto položku ze sbírky"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Sbírka"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Vyberte si --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Přidat poznámku"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Můžete používat\n<a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> pro formátování."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "Důvod hlášení"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Promiňte, komentáře jsou vypnuty"
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Chybka, váš komentář byl prázdný."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Váš komentář byl odeslán!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Zkontrolujte prosím své tvorby a zkuste to znovu."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Musíte vybrat nebo přidat sbírku"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "„%s“ už je ve sbírce „%s“"
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "„%s“ přidáno do sbírky „%s“"
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Tuto tvorbu jste smazal(a)."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Tvorba nebyla odstraněna, protože jste nezaškrtli, že jste si jistí."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Chystáte se smazat tvorbu jiného uživatele. BuÄte opatrná/ý."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Smazal(a) jste položku ze sbírky."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "Objekt nebyl odstraněn, protože jste nezaškrtli, že jste si jistí."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Chystáte se smazat položku ze sbírky dalšího uživatele. BuÄte opatrná/ý."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Smazal(a) jste sbírku „%s“"
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "Sbírka nebyla odstraněna, protože jste nezaškrtli, že jste si jistí."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Chystáte se smazat sbírku dalšího uživatele. BuÄte opatrná/ý."
diff --git a/mediagoblin/i18n/cs/mediagoblin.po b/mediagoblin/i18n/cs/mediagoblin.po
new file mode 100644
index 00000000..5f1e81c9
--- /dev/null
+++ b/mediagoblin/i18n/cs/mediagoblin.po
@@ -0,0 +1,2634 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# digitaldreamer <digitaldreamer@email.cz>, 2014, 2015.
+# Mirek2 <mazelm@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-02-26 10:33+0000\n"
+"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
+"Language-Team: Czech "
+"(http://www.transifex.com/projects/p/mediagoblin/language/cs/)\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1424946782.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Promiňte, na této instanci je možnost registrace vypnuta."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Promiňte, nahlášení je na tomto serveru vypnuto."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Promiňte, autentikace je na této instanci vypnuta."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Neplatné uživatelské jméno nebo emailová adresa."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Do tohoto pole emailová adresa nepatří."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Toto pole vyžaduje emailovou adresu."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Omlouváme se, uživatel s tímto jménem už existuje."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Promiňte, uživatel s touto emailovou adresou již existuje."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "Chybný ověřovací klÃ­Ä nebo id užvatele."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Vaše emailová adresa byla ověřena. Nyní se můžete přihlásit, upravit si svůj profil, a nahrávat obrázky!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "Neplatný ověřovací klÃ­Ä nebo id uživatele"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Napřed se musíte přihlásit, abychom věděli komu máme email poslat!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Svojí emailovou adresu máte již ověřenu!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Váš ověřovací email byl znovu odeslán."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} přidal(a) {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} přidal(a) {object} do {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} publikoval(a) {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} vytvořil(a) {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} smazal(a) {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} se nelíbí {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} si přidal(a) k oblíbeným {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} zaÄal(a) sledovat {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} se líbí {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} vložil(a) {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} vložil(a) {object} do {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} sdílí {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} si odstranil(a) z oblíbených {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} přestal(a) sledovat {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} se už nelíbí {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} zrušil(a) sdílení {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} aktualizoval(a) {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} oznaÄil(a) Å¡títkem {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "obrázek"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "komentář"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "sbírku"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "osobu"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "objekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Název"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Popis tohoto díla"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Pro formátování můžete používat <a href=\"http://cs.wikipedia.org/wiki/Markdown\" target=\"_blank\">Markdown</a>."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Štítky"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "OddÄ›lte Å¡títky Äárkami."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Krátký název"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "Krátký název nemůže být prázdný"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "Název, který je souÄástí adresy této tvorby. VÄ›tÅ¡inou není tÅ™eba ho mÄ›nit."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licence"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "O mnÄ›"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Webové stránky"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Tato adresa obsahuje chyby"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Rodné město"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Poslat email vždy, když někdo napíše komentář k mým tvorbám"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Zasílat oznámení o událostech na tomto webu."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Oblíbená licence"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Toto bude vaše výchozí licence ve formuláři pro upload."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "Nadpis nesmí být prázdný"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Popis této sbírky"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "Název, který je souÄástí adresy této sbírky. VÄ›tÅ¡inou není tÅ™eba ho mÄ›nit."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Staré heslo"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Zadejte své staré heslo, abyste potvrdil(a), že vlastníte tento úÄet."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nové heslo"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Nová emailová adresa"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Heslo"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Zadejte své heslo pro ověření, že jste majitelem tohoto úÄtu."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identifikátor"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Hodnota"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "U tohoto uživatele již existuje jiná tvorba s tímto krátkým názvem."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Upravujete tvorbu jiného uživatele. BuÄte opatrná/ý."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Přidal(a) jste přílohu %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Editovat můžete jen svůj vlastní profil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Upravujete profil uživatele. BuÄte opatrná/ý."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Změny profilu uloženy"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Nastavení úÄtu uloženo"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Neznámá aplikace, nelze zrušit autorizaci"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Aplikaci byla zrušena autorizace"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Smazání vaÅ¡eho úÄtu je tÅ™eba potvrdit."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Už máte sbírku se jménem „%s“!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "U tohoto uživatele již existuje jiná sbírka s tímto krátkým názvem."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Upravujete sbírku dalšího uživatele. BuÄte opatrná/ý."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Vaše emailová adresa byla ověřena."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Špatné heslo"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Téma nelze propojit... žádné téma není nastaveno\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Chybí adresář souborů k tomuto tématu.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Byl však nalezen odkaz na starý adresář; odstraňuji.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Nepovedlo se odkázat na „%s“: %s existuje a symbolickým odkazem\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Přeskakuji \"%s\"; jež je nastaven.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Byl nalezen starý odkaz pro \"%s\"; odstraňuji.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Podrobnější instrukce jak správně používat tento\nskript (a jak formátovat soubor .csv s metadaty) najdete v dokumentaci\nMediaGoblinu na stránce o uploadování skrze příkazovou řádku\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Jméno uživatele, kterému patří tyto tvorby"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Cesta k souboru .csv obsahujícímu metadata."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "Nezpracovávat okamžitě, předat serveru Celery."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Promiňte, ale uživatel '{username}' neexistuje."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Soubor {path} nebyl nalezen, použijte argument -h pro nápovědu."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Chyba u tvorby '{media_id}' cesta '{error_path}': {error_msg}\n\nMetadata nebyla odeslána."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "CHYBA: Lokální soubor {filename} není přístupný.\nSoubor {filename} nebude odeslán na server."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr "Soubor {filename} byl úspěšně odeslán!\nPro jistotu se můžete podívat na Panel zpracování tvoreb na vašich stránkách, kde uvidíte\nzda upload proběhl úspěšně."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "CHYBA: Velikost tohoto souboru pÅ™ekraÄuje maximální velikost povolenou na tÄ›chto stránkách."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "CHYBA: Odesláním tohoto souboru by souÄasný uživatel pÅ™ekroÄil svůj limit pro nahrávání souborů."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "CHYBA: Tento uživatel již vyÄerpal svůj limit pro nahrávání souborů."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} z celkového poÄtu {files_attempted} souborů úspěšnÄ› odesláno."
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "CSRF cookie není dostupné. Nejspíš je to důsledek blokování cookies v prohlížeÄi, nebo nÄ›co podobného.<br/>UjistÄ›te se, že je nastavování cookies povoleno pro tuto doménu."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Omlouvám se, nepodporuji tento typ souboru :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Popis"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Jsem si jist(a), že to chci smazat"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Jupí! Odesláno!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Jupí! Upravený příspěvek byl odeslán!"
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Smazal(a) jste blog."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Tvorba nebyla odstraněna, protože jste nezaškrtl(a), že jste si jist(a)."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Chystáte se smazat blog jiného uživatele. BuÄte opatrná/ý"
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Blog nebyl smazán, protože k tomu nemáte oprávnění."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Přidat příspěvek"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Upravit Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Smazat Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Upravit"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Smazat"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Zobrazit jako seznam </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Zatím zde nejsou žádné příspěvky."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Opravdu smazat %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Smazat navždy"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Vytvořit/Upravit Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Přidat"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Vytvořit/Upravit příspěvek."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Vytvořit/Upravit příspěvek."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Blog uživatele %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Zobrazit"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Vytvořit Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr "Ovládací panel blogů"
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "unoconv nebylo možné spustit, zkontrolujte log"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Transkódování videa selhalo"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Odejmout práva"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Udělit zákaz přístupu"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Poslat uživateli zprávu"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Smazat obsah"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "Uživatel bude mít zákaz do:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "ProÄ tomuto uživateli udÄ›lujete zákaz?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Jak chcete toto hlášení řešit?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Jaká práva odejmete?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "ProÄ byl uživateli udÄ›len zákaz:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Zpráva pro uživatele:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Obsah řešení:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} odebral(a) uživateli {user} oprávnění {privilege}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} udělil(a) uživateli {user} zákaz až do {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "do {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "trvale"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} poslal(a) varovný email uživateli {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} smazal(a) komentář."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} smazal(a) tvorbu."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Varování od"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "okomentoval(a) váš příspěvek"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Odebírám komentáře na %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Nebudou vám zasílána oznámení o komentářích na %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Je vyžadován oauth_token."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "Požadavek nemá token."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Promiňte, soubor je příliš velký."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "Promiňte, vložením tohoto souboru byste již pÅ™ekroÄili svůj datový limit."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Promiňte, již jste vyÄerpali svůj datový limit."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Zadejte URL adresu tvorby, kterou chcete vystavit"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "První"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Druhá"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Třetí"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-úroveň---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Jak to funguje?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Jak mohu vystavit tvorbu?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr "\nJdÄ›te na stránku tvorby, kterou chcete vystavit. Zkopírujte její URL adresu, a pak ji vložte jako nový řádek to textového okénka výše. V každém řádku by mÄ›lo být pouze jedno URL. Vložte jej pod nadpis, který urÄuje důležitost (první, druhá, nebo tÅ™etí úroveň). Až do tohoto okénka vložíte adresy vÅ¡ech tvoreb, které si pÅ™ejete vystavit, kliknÄ›te na tlaÄítko \"Submit Query\", a vaÅ¡e tvorby se objeví na hlavní stránce."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "Je i jiný způsob, jak spravovat vystavené tvorby?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr "\nAno. Můžete také jít na stránku přísluÅ¡né tvorby, a podívat se na panel, který najdete po stranÄ›. Pokud tvorba není vystavena, uvidíte tam tlaÄítko “Vystavit“. KliknÄ›te na nÄ›j, a tvorba bude vystavena v první úrovni, nahoÅ™e na stránce. VÅ¡echny ostatní vystavené tvorby budou posunuty níže.<br /><br />\n\nOtevÅ™ete-li stránku tvorby, která je právÄ› vystavena, uvidíte možnosti „ZruÅ¡it vystavení“, „Zvýšit důležitost“ a „Snížit důležitost“. Kliknete-li na „ZruÅ¡it vystavení“, tvorba se již nebude zobrazovat na hlavní stránce. Kdykoli ji můžete znovu vystavit. Zvýšení důležitosti posune tvorbu o úroveň výše, a snížení naopak o úroveň níže."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "Co znamená První úroveň, Druhá úroveň?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr "\nTyto kategorie urÄují, jak výrazná bude vaÅ¡e tvorba na hlavní stránce. PÅ™i použití první úrovnÄ› se zobrazí hned nahoÅ™e a bude mnohem vÄ›tší. Druhá úroveň znamená, že bude o nÄ›co menší. To, co je vystavené pod tÅ™etí úrovní, se zobrazí v mřížce na konci stránky.<br /><br />\n\nPrvní úroveň také zobrazí u tvorby delší popis než druhá, a tÅ™etí bude mít popis jeÅ¡tÄ› kratší."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr "Co rozhoduje o tom, jaké informace se budou zobrazovat u vystavené tvorby?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr "\nKdyž je tvorba vystavena, její nadpis, obrázek a Äást jejího popisu budou zobrazeny na hlavní stránce.\nDélka zobrazeného popisu závisí na úrovni její důležitosti.\nPrvní úroveň ukáže prvních 512 znaků popisu. Druhá úroveň ukáže 256, a tÅ™etí jen 128 znaků."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Jak zrušit vystavení tvorby?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr "\nVystavení tvorby lze zruÅ¡it tím, že smažete její řádku z textového okénka, které najdete výše na této stránce, a potvrdíte zmÄ›nu kliknutím na tlaÄítko \"Submit Query\"."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "POZOR:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr "\nKdyž kopírujete a vkládáte URL adresy do textového okénka, mÄ›jte na pamÄ›ti, že případný pÅ™eklep nebo chyba v adrese způsobí, že vaÅ¡e tvorba nebude vystavena. Zkontrolujte si proto, že vÅ¡echny tvorby byly skuteÄnÄ› vystaveny."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr "\nVystavit tvorbu"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Vystavit"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr "\nZrušit vystavení tvorby"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Zrušit vystavení"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr "\nZvýšit úroveň důležitosti pro vystavení"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Zvýšit důležitost"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr "\nSnížit úroveň důležitosti pro vystavení"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Snížit důležitost"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Nejnovější tvorba"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "V tuto chvíli není nic vystaveno."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr "Pokud zde chcete vystavit nÄ›kterou tvorbu, jdÄ›te na stránku přísluÅ¡né tvorby a kliknÄ›te tam na tlaÄítko <a class=\"button_action\">Vystavit</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr "Tuto stránku vidíte proto, že máte oprávnÄ›ní vystavovat tvorby. ObyÄejný uživatel by vidÄ›l jen prázdnou stránku, proto mÄ›jte vždy vystavenu nÄ›jakou tvorbu, pokud používáte na své instanci plugin 'archivalook'. PokroÄilejším nástrojem k ovládání této funkce je <a href=\"%(featured_media_url)s\">Panel pro správu vystavených tvoreb</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Zobrazit nejnovější tvorby"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Správa vystavených tvoreb"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr "Omlouváme se, ale tento zvukový soubor\n\tnelze pÅ™ehrát, protože váš prohlížeÄ\n\tnepodporuje HTML5 audio."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "Můžete si stáhnout moderní prohlížeÄ,\n\tkterý umí pÅ™ehrávat tento typ zvuku,\n\tna <a href=\"http://getfirefox.com\">http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Omlouváme se, ale toto video nelze pÅ™ehrát, protože\nváš prohlížeÄ nepodporuje HTML5\nvideo."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Můžete si stáhnout moderní prohlížeÄ, který umí pÅ™ehrát toto video, na <a href=\"http://getfirefox.com\"> http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Uživatelské jméno"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Emailová adresa"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Uživatelské jméno nebo email"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Trvalé přihlášení"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Uživatelské jméno Äi email"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Pokud je tato emailová adresa (pozor na velká písmena!) zaregistrována, bude na ní odeslán email s instrukcemi jak si změnit heslo."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Nebyl nalezen nikdo s tímto uživatelským jménem."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Byl odeslán email s instrukcemi jak změnit heslo."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "Email pro obnovení hesla nelze odeslat, protože vaše uživatelské jméno není aktivováno, nebo nebyla ověřena emailová adresa."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "Chybné id uživatele."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Můžete se nyní přihlásit se svým novým heslem."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "Nejste již aktivním uživatelem. Kontaktujte prosím administrátora serveru pro opÄ›tovnou aktivaci vaÅ¡eho úÄtu."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Vaše heslo bylo úspěšně změněno"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Nastavte své nové heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Nastavit heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Změna hesla uživatele %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Uložit"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "JeÅ¡tÄ› nemáte úÄet?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Vytvořte si ho zde!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Změňte si heslo."
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Obnovit heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Poslat návod"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Zapoměl(a) jste své heslo?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Zobrazit <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "PÅ™ihlaÅ¡te se pro vytvoÅ™ení nového úÄtu."
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadata"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Upravit metadata"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Povolit"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Zakázat"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Jméno"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "Jméno klienta pro OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Toto se uživatelům zobrazí, když budou povolovat\nvaší aplikaci, aby se přihlásila jejich jménem."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Typ"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Confidential</strong> - Klient dokáže posílat\nserver GNU MediaGoblin požadavky, které nemůžou být\nzachyceny na stranÄ› uživatele (napÅ™. běží na serveru).\n<strong>Public</strong> - Klient nemá možnost posílat\nna server GNU MediaGoblin důvÄ›rné požadavky (napÅ™. běží\nv JavaScriptu ve webovém prohlížeÄi)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "URI pro přesměrování"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "URI pro přesměrování aplikací, toto pole\nje <strong>vyžadováno</strong> pro veřejné klienty."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Toto pole je vyžadováno pro veřejné klienty"
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "Klient {0} byl zaregistrován!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Připojení klientů OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Vaši OAuth klienti"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Promiňte, pro toto OpenID je již úÄet zaregistrován."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Promiňte, server pro OpenID nebyl nalezen"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "Nebyla nalezena žádná služba OpenID pro %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Ověřování %s selhalo: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Ověření bylo zrušeno"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "Vaše OpenID adresa byla úspěšně uložena."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "Nemůžete smazat svou jedinou adresu OpenID pokud nemáte nastavené heslo"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Toto OpenID není k tomuto úÄtu registrováno."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "OpenID bylo úspěšně odstraněno."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Přidat OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Odstranit OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Přihlásit se"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Chybné přihlášení!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "PÅ™ihlaÅ¡te se pro vytvoÅ™ení úÄtu!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Nebo se přihlašte heslem!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "Nebo se přihlašte pomocí OpenID!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "Nebo se zaregistrujte s OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Promiňte, pro tento email Persona je již úÄet zaregistrován."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "Emailová adresa Persona byla úspěšně odstraněna."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "Nemůžete odstranit svou jedinou emailovou adresu Persona pokud nemáte nastavené heslo."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Tato emailová adresa Persona není k tomuto úÄtu registrována."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Promiňte, na tuto emailovou adresu Persona je již úÄet registrován."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "Váš email Persona byl úspěšně uložen."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Smazat emailovou adresu Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Přidat emailovou adresu Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "Nebo se přihlašte pomocí Persony!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "Nebo se zaregistrujte s Personou!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Neplatný soubor pro tento typ tvorby."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Kopírování do veřejného uložiště selhalo."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "Přijatelný soubor ke zpracování nebyl nalezen"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Maximální velikost souboru: {0} mb"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Soubor"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Pro formátování můžete používat <a href=\"http://cs.wikipedia.org/wiki/Markdown\" target=\"_blank\">Markdown</a>."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Musíte poskytnout soubor."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Sbírka „%s“ přidána!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Byl vám udělen zákaz."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Obrázek vystresovaného goblina"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Byl vám udělen zákaz,"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "do %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Ověřte svůj email!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "odhlásit"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "ÚÄet <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "ZmÄ›nit nastavení úÄtu"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Panel zpracování tvoreb"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Odhlásit"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Přidat tvorbu"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Vytvořit novou sbírku"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Moderátorské funkce:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Panel pro správu uživatelů"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Panel pro správu hlášení"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorizace"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autorizovat"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Jste přihlášen(a) jako"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Přejete si autorizovat"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "neznámou aplikaci"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "pro přístup k vaÅ¡emu úÄtu?"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Aplikace s přístupem k vaÅ¡em úÄtu může:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Vkládat tvorby vaším jménem"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Zobrazte si vaše údaje (např. profil, tvorbu apod.)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Měnit vaše informace"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorizace dokonÄena"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorizace kompletní"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Tento <strong>ověřovací kód</strong> zkopírujte a vložte do svého klienta:"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "VytvoÅ™te si úÄet!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Vytvořit"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Zdravím, %(username)s,\n\nAbyste aktivoval(a) váš úÄet na GNU MediaGoblin, otevÅ™ete následující URL ve\nvaÅ¡em prohlížeÄi:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Na tomto serveru běží <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, projekt <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Vydáno pod licencí <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Zdrojový kód</a> je volně přístupný."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Podmínky poskytovatele"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Prozkoumat"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Dobrý den, vítejte na MediaGoblinu!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Na těchto stránkách běží <a href=\"http://mediagoblin.org\">MediaGoblin</a>, úžasný software pro hostování medií."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Abyste mohli nahrávat vlastní tvorby, psát komentáře, a jeÅ¡tÄ› víc, pÅ™ihlaÅ¡te se svým MediaGoblinovým úÄtem."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "Ještě ho nemáte? Je to jednoduché!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n>Založte si úÄet na tÄ›chto stránkách</a>\nnebo"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Nastavte MediaGoblin na svém vlastním serveru</a>"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logo MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Upravujete přílohy %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Přílohy"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Přiložit soubor"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Uložit změny"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Měním email uživatele %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Zrušit autorizaci aplikací"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Zrušení autorizace aplikací"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr "Tyto aplikace mají přístup k VaÅ¡emu úÄtu GNU MediaGoblin. ZruÅ¡ení autorizace\naplikaci toto právo odebere, a aplikace pak již nebude moci používat Váš úÄet."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Žádné aplikace nejsou autorizovány."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Typ:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Autorizované:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "před %(formatted_time)s"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Opravdu smazat uživatele '%(user_name)s' a všechnu asociovanou tvorbu/komentáře?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Ano, skuteÄnÄ› chci smazat svůj úÄet"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Upravujete %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "MÄ›níte nastavení úÄtu %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Smazat můj úÄet"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Email"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Editace %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Upravujete profil %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadata pro \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Metadata"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Přidat nový řádek"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Aktualizovat metadata"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Odstranit prázdné řádky"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Dobrý den,\n\nPotřebujeme ověřit, jestli jste %(username)s. Pokud ano,\nklikněte prosím na tento odkaz pro ověření vaší nové emailové adresy.\n\n%(verification_url)s\n\nPokud nejste %(username)s, nebo jste nežádali o změnu emailu, nemusíte\nsi tohoto emailu všímat."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Nové komentáře"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "OznaÄit jako pÅ™eÄtené"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Tvorba se štítky: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Stáhnout"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Původní"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr "Promiňte, tento zvukový soubor nelze pÅ™ehrát,\n\tprotože váš prohlížeÄ nepodporuje HTML5\n\taudio."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "Moderní prohlížeÄ, který umí pÅ™ehrávat tento typ zvuku\n\tsi můžete stáhnout na <a href=\"http://getfirefox.com\">\n\thttp://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Původní soubor"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "Soubor WebM (kodek Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Vytvořeno"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Obrázek %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "Soubor PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspektiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Zepředu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Zvrchu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Ze strany"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Stáhnout model"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formát souboru"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Výška objektu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Omlouváme se, ale toto video nelze pÅ™ehrát, protože\nváš prohlížeÄ nepodporuje HTML5\nvideo."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Můžete si stáhnout moderní prohlížeÄ, který \n umí pÅ™ehrát toto video, na <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "Soubor WebM (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Zde můžete sledovat stav tvoreb zpracovávaných na této instanci."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Zpracovávané tvorby"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Uživatel"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Odesláno"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Stav transkódování"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Žádné zpracovávané tvorby"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Tyto tvorby se nepovedlo zpracovat:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "PříÄina selhání"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadata o selhání"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Žádné záznamy o selhání!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Posledních 10 úspěšných uploadů"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Odesláno"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Zatím tu nejsou žádné zpracované tvorby!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Promiňte, žádné takové hlášení nebylo nalezeno."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Návrat do Panelu Hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Nahlášený komentář"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr "\n■Nahlášené medium od uživatele <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr "\nOBSAH OD UŽIVATELE\n<a href=\"%(user_url)s\"> %(user_name)s</a>\nBYL SMAZÃN"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Důvod hlášení:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Vyřešit"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Vyřešit Toto Hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Stav"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "VYŘEŠENO"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "Nemáte oprávnění zasáhnout proti administrátorovi"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Panel hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr "\nZde můžete najít otevřená hlášení podaná uživateli."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr "Aktivní Podaná Hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Pachatel"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Datum Nahlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Ohlašovatel"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Důvod"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr "\nNahlášení Komentáře #%(report_id)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr "\nNahlášení Tvorby #%(report_id)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "Nebyla nalezena žádná otevřená hlášení."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Uzavřená Hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Vyřešeno"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Přijaté Opatření"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr "\nUzavřené hlášení #%(report_id)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Nebyla nalezena žádná uzavřená hlášení."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Uživatel: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Návrat do Panelu Uživatelů"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Omlouváme se, ale požadovaný uživatel nebyl nalezen."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Je třeba ověřit email"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "NÄ›kdo si zaregistroval úÄet s tímto jménem, zatím ale nebyl aktivován."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profil %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "má ZÃKAZ až do %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "má trvalý zákaz"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Tento uživatel si (zatím) nevyplnil profil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Upravit profil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Procházet sbírky"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Aktivní hlášení na uživatele %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "ID hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Nahlášený obsah"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Popis hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Hlášení #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Nahlášený komentář"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Nahlášená tvorba"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "Na %(username)s nebyla podána žádná hlášení"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Všechna hlášení na %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Všechna hlášení, která %(username)s podal(a)"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "Oprávnění uživatele %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Oprávnění"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Uděleno"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Ano"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Ne"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Udělit zákaz"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Odvolat zákaz"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Panel uživatelů"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr "\nZde můžete najít uživatele, abyste proti nim mohli podniknout příslušná opatření."
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Aktivní Uživatelé"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Datum Registrace"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "PoÄet vložených komentářů"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "Žádní uživatelé nebyli nalezeni."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Přidat sbírku"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Přidejte vaši tvorbu"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Příspěvek od uživatele <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Přidat komentář"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Přidat tento komentář"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Přidáno"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (sbírka uživatele %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s od <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Smazat sbírku %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "Opravdu smazat sbírku %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Odstranit %(media_title)s z %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Opravdu odstranit %(media_title)s z %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Odstranit"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Sbírky uživatele %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Sbírky <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Zdravím, uživateli %(username)s,\n%(comment_author)s vložil(a) komentář k vašemu příspěvku (%(comment_url)s) na serveru %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Tvorba %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "Tvorba <a href=\"%(user_url)s\">%(username)s</a> se štítkem <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Tvorba <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Prohlížení tvoreb uživatele <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Náhled Komentáře"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Přidat “%(media_title)s†do sbírky"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Přidat novou sbírku"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Zde můžete sledovat stav tvoreb, které jsou zpracovávány pro vaší galerii."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Vašich posledních 10 úspěšných uploadů"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Nahlásit</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Nahlašuji tento Komentář"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "Nahlašuji tuto Tvorbu"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\n ■Publikováno <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Nahlásit"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Zde můžete ostatním říct něco o sobě."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Zobrazit všechnu tvorbu uživatele %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Zde se zobrazí tvorba, ale zatím jste nic nepřidal(a)."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Zdá se, že tu zatím žádná tvorba není..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Skoro hotovo! Váš úÄet musí jeÅ¡tÄ› být aktivován."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Za pár minut by vám měl přijít email s návodem, jak na to."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "Pokud nepřijde:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Znovu zaslat ověřovací email"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "NÄ›kdo si zaregistroval úÄet s tímto uživatelským jménem, ale jeÅ¡tÄ› nebyl aktivován."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Pokud jste to vy, ale ztratili jste ověřovací email, můžete se <a href=\"%(login_url)s\">přihlásit</a> a odeslat jej znovu."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(odstranit)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Ve sbírce"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Přidat do sbírky"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Odebírat komentáře"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Utišit komentáře"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "ikona kanálu"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "kanál Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Všechna práva vyhrazena"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Novější"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Starší →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Přejít na stránku:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "novější"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "starší"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Místo"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Nahlásit tvorbu"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Štítky"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Soubor obrázku nelze pÅ™eÄíst."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Jejda!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Došlo k chybě"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Špatný Požadavek"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "Požadavek zaslaný na tento server je neplatný, prosím zkontrolujte ho."
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Tato operace není dovolena"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Promiň Dave, nemůžu ti dovolit to udělat!</p><p>Pokoušeli jste se použít funkci, ke které nemáte oprávnění."
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Zdá se, že na této adrese žádná stránka není. Omlouváme se!</p><p>Pokud jste si jistí, že tato adresa je správná, je možné, že stránka, kterou hledáte, byla přesunuta nebo smazána."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "rokem"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "měsícem"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "týdnem"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "dnem"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hodinou"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minutou"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Komentář"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Pro formátování můžete používat <a href=\"http://cs.wikipedia.org/wiki/Markdown\" target=\"_blank\">Markdown</a>."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Jsem si jist(a), že chci odstranit tuto položku ze sbírky"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Sbírka"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Vyberte si --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Přidat poznámku"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Pro formátování můžete používat <a href=\"http://cs.wikipedia.org/wiki/Markdown\" target=\"_blank\">Markdown</a>."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Důvod hlášení"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Promiňte, komentáře jsou vypnuty"
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Chybka, váš komentář byl prázdný."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Váš komentář byl odeslán!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Zkontrolujte prosím své tvorby a zkuste to znovu."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Musíte vybrat nebo přidat sbírku"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "„%s“ už je ve sbírce „%s“"
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "„%s“ přidáno do sbírky „%s“"
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Tuto tvorbu jste smazal(a)."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Chystáte se smazat tvorbu jiného uživatele. BuÄte opatrná/ý."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Smazal(a) jste položku ze sbírky."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "Objekt nebyl odstraněn, protože jste nezaškrtli, že jste si jistí."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Chystáte se smazat položku ze sbírky dalšího uživatele. BuÄte opatrná/ý."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Smazal(a) jste sbírku „%s“"
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "Sbírka nebyla odstraněna, protože jste nezaškrtli, že jste si jistí."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Chystáte se smazat sbírku dalšího uživatele. BuÄte opatrná/ý."
diff --git a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/cy/mediagoblin.po
index 24aa5e2a..15da9e11 100644
--- a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/cy/mediagoblin.po
@@ -2,30 +2,30 @@
# Copyright (C) 2014 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
+"POT-Creation-Date: 2014-09-21 11:08-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: cy\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
"Generated-By: Babel 1.3\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:303 mediagoblin/plugins/openid/views.py:202
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:318
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
+#: mediagoblin/decorators.py:361 mediagoblin/plugins/ldap/views.py:55
#: mediagoblin/plugins/persona/views.py:77
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
@@ -80,7 +80,11 @@ msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -189,7 +193,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/tests/test_util.py:143
msgid "Password"
msgstr ""
@@ -539,6 +543,57 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:34
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:47
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:51
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:53
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:62
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:71
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:78
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
#: mediagoblin/moderation/tools.py:91
msgid "Warning from"
msgstr ""
@@ -557,11 +612,11 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:241
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:246 mediagoblin/oauth/views.py:297
msgid "No request token found."
msgstr ""
@@ -640,7 +695,7 @@ msgid ""
"bar to\n"
" the side of the media entry. If the piece of media has not been "
"featured\n"
-" yet you should see a button that says 'Feature'. Press that "
+" yet you should see a button that says \"Feature\". Press that "
"button and\n"
" the media will be featured as a Primary Feature at the top of the"
" page.\n"
@@ -795,10 +850,11 @@ msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the "
"button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be "
@@ -807,14 +863,11 @@ msgid ""
"'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be "
"found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -1243,10 +1296,6 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/base.html:97
msgid "Verify your email!"
msgstr ""
@@ -1288,6 +1337,10 @@ msgstr ""
msgid "Create new collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:163
+msgid "Moderation powers:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:169
msgid "User management panel"
msgstr ""
@@ -1685,6 +1738,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1695,6 +1774,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1704,6 +1791,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1744,6 +1835,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1994,10 +2089,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -2226,6 +2317,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2274,34 +2373,34 @@ msgstr ""
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:39
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:40
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:54
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:56
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:64
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:65
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:73
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
"sure the address is correct, maybe the page you're looking for has been "
@@ -2438,4 +2537,3 @@ msgstr ""
#: mediagoblin/user_pages/views.py:468
msgid "You are about to delete another user's collection. Proceed with caution."
msgstr ""
-
diff --git a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 7ca6d1de..00000000
--- a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index eb419349..00000000
--- a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1850 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Aputsiaĸ Niels Janussen <aj@isit.gl>, 2013-2014
-# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012
-# Olle Jonsson <olle.jonsson@gmail.com>, 2012
-# Tanja Trudslev <tanja.trudslev@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-07-06 00:16+0000\n"
-"Last-Translator: Aputsiaĸ Niels Janussen <aj@isit.gl>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/mediagoblin/language/da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Desværre, registrering er ikke muligt på denne instans"
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Beklager, godkendelse er slået fra på denne instans."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Ugyldigt brugernavn eller e-mailadresse."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Dette felt accepterer ikke e-mailadresser."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Dette felt kræver en e-mailadresse."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Desværre, det brugernavn er allerede brugt"
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Desværre, en bruger er allerede oprettet for den email"
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "Nøglen til bekræftigelse eller bruger-id er ugyldigt."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Din email adresse er blevet bekræftet. Du kan nu logge på, ændre din profil, og indsende billeder!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "Bekræftelsesnøglen eller brugerid er forkert"
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Du er nødt til at være logget ind, så vi ved hvem vi skal emaile!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Du har allerede bekræftet din email adresse!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Email til godkendelse sendt igen."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Titel"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Beskrivelse af arbejdet"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Du kan bruge\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> til formattering."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Tags"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Separer tags med kommaer."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Webnavn"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "Webnavnet kan ikke stå tomt"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "Titeldelen af dette medie's adresse. Du behøver normalt ikke ændre dette."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licens"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Bio"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Websted"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Denne adresse indeholder fejl"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Email mig når andre kommenterer på mine medier"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Aktivér insite-notifikationer for begivenheder."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Præferencer for licens"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Dette vil blive dit standardlicens i formularer til overførsler."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "Titlen kan ikke være tom"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Beskrivelse af denne samling"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "Titeldelen af denne samlings's adresse. Du behøver normalt ikke ændre dette."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Gammelt kodeord"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Skriv dit gamle kodeord for at bevise det er din konto."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Ny kodeord"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Ny e-mailadresse"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Kodeord"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Angiv dit kodeord for at bevise at du ejer denne konto."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "Et post med dette webnavn findes allerede for denne bruger."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Du er ved at ændre en anden brugers' medier. Pas på."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Du tilføjede den vedhæftede fil %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Du kan kun redigere din egen profil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Du er ved at ændre en bruger's profil. Pas på."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Profilændringer gemt"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Kontoindstillinger gemt"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Du skal bekræfte at du vil slette din konto."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Du har allerede en samling ved navn \"%s\"!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "En samling med dette webnavn findes allerede for denne bruger."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Du er ved at ændre en anden bruger's samling. Pas på."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Din e-mailadresse er blevet bekræftet."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Forkert kodeord"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Kan ikke linke til tema... intet tema sat\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Dog blev den symbolske henvisning til den tidligere kataloghenvisning fundet; fjernet.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "Kunne ikke henvise \"%s\": %s eksisterer og er ikke en symbolsk henvisning\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Springer over \"%s\"; allerede konfigureret.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Gammel henvisning fundet for \"%s\"; fjerner.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "CSRF-cookie er ikke tilstede. Dette skyldes højest sandsynligt en blokering af cookie eller lignende.<br/>Sørg for at tillade, at der angives cookie'er for dette domæne."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Desværre, jeg understøtter ikke den filtype :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "unoconv kunne ikke køres, tjek logfilen"
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Omkodning af video mislykkedes"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Fjern privilegiet"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Bandlys denne bruger"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Slet indholdet"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "Brugeren vil blive bandlyst indtil:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "Hvorfor bandlyser du denne bruger?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Hvilken handling vil du foretage, for at tackle rapporten?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Hvilke privilegier ønsker du at fjerne?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Advarsel fra"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "kommenterede på dit opslag"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Abonnerede på kommentarer på %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Du vil ikke modtage notifikationer for kommentarer på %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Der skal angives en oauth_token."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "Beklager, filstørrelsen er for stor."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Beklager, overførsel af denne fil vil betyde at du bryder grænsen for overførsel."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Beklager, du har nået din grænse for filoverførsel."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Brugernavn"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Email adresse"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Brugernavn eller e-mail"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Forbliv logget ind"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Brugernavn eller email"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Hvis emailadressen (der skelnes mellem små og store bogstaver!) er en registreret, så er der blevet sendt en email med instrukser om ændring af adgangskode."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Kunne ikke finde nogen med dette brugernavn."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "En email er blevet sendt med instruktioner til at ændre dit kodeord."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Vi kunne ikke sende en kodeords nulstillings email da dit brugernavn er inaktivt, eller din konto's email adresse er ikke blevet godkendt."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "Bruger-id er ugyldigt."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Du kan nu logge ind med dit nye kodeord."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Ændringen af din adgangskode blev gennemført"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Angiv dit nye kodeord"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Angiv kodeord"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Ændrer %(username)s's kodeord"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Gem"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Har du endnu ikke en konto?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Opret én her!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Skift din adgangskode."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Generhverv dit kodeord"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Send instruktioner"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Glemt dit kodeord?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Placering"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Vis på <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "Log ind for at oprette en konto!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Tillad"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Forbyd"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Navn"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "Navnet af OAuth klienten"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Beskrivelse"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Dette vil være synligt for brugere, og tillader\ndine programmer at godkende som disse."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Type"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Fortrolig</strong> - Klienten kan foretage\n forespørgsler GNU MediaGoblin-instansen, der ikke kan\n opsnappes af brugeren (dvs. serverside-klienten).<br />\n <strong>Offentlig</strong> - Klienten kan ikke foretage fortrolige\n forespørgsler til GNU MediaGoblin-instansen (dvs. JavaScript-klient\n på klientsiden)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "Omdirigér URI"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "URI'en til viderestililng for applikationerne. Dette felt\ner <strong>påkrævet</strong> for offentlige klienter."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Dette felt er nødvendigt for offentlige klienter"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Klienten {0} er blevet registreret!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "OAuth-klientforbindelser"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Dine OAuth-klienter"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Tilføj"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Beklager, der er allerede tilmeldt en konto med dette OpenID."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "Beklager, OpenID-serveren blev ikke fundet"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "Der blev ikke fundet en OpenID-tjeneste for %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Verifikation af %s mislykkedes: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Verifikation blev annulleret"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "Din OpenID-url blev glemt."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Du kan ikke slette din eneste OpenID-url, medmindre du har angivet en adgangskode"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Denne OpenID er ikke registreret for denne konto."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "Fjernelse af OpenID blev gennemført."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Tilføj et OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Slet et OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Slet"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenID'er"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Log ind"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Login mislykkedes!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "Log ind for at oprette en konto!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Eller log ind med et kodeord!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "Eller log ind med OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "Eller tilmeld dig med OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Beklager, der er allerede en konto med denne Persona-email."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "Fjernelse af Persona-emailadressen blev gennemført."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "Du kan ikke slette din eneste Persona-emailadresse, medmindre du har angivet en adgangskode."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Denne Persona-emailadresse er ikke registreret på denne konto."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "Din e-postadresse for Persona blev gemt."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "Persona'er"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Forkert fil for medietypen."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Maks. filstørrelse: {0} mb"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Fil"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Du kan benytte\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> til tekstformatering."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Du må give mig en fil"
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Juhuu! Delt!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "Samlingen \"%s\" blev tilføjet!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Du er blevet bandlyst."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Et billede at en goblin der er stresset"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Du er blevet bandlyst"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "indtil %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "ubestemt tid"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Bekræft din email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "log ud"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "<a href=\"%(user_url)s\">%(user_name)s</a>'s konto"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Skift kontoindstillinger"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panel til mediebehandling"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Log ud"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Tilføj medie"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Opret ny samling"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Seneste mediefil"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Godkendelse"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Godkend"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Du er logget ind som"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Ønsker du at godkende"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "et ukendt program"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "for at tilgå din konto?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Programmer med adgang til din konto kan:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Afsend nyt medie som dig selv"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Se dine informationer (dvs. profil, medie, osv.)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Tilpas dine informationer"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Godkendelse er afsluttet"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Godkendelse er udført"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Kopiér og indsæt dette i din klient:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Opret en konto!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Opret"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Hej %(username)s,\n\nfor at aktivere din GNU MediaGoblin-konto, åbner du følgende\nadresse i din webbrowser:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Drevet af <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, et <a href=\"http://gnu.org/\">GNU</a>-projekt."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Udgivet under licenset <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Kildekoden</a> er tilgængelig."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Udforsk"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Hey, velkommen til denne MediaGoblin side!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Dette sted kører <a href=\"http://mediagoblin.org\">MediaGoblin</a>, et særdeles godt stykke software til hosting af medier."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "For at tilføje dine egne medier, skrive kommentarer, og mere, du kan logge ind med din MediaGoblin konto."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "Har du ikke en endnu? Det er let!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >Opret en konto på dette sted</a>\n eller"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Opsæt MediaGoblin på din egen server</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Redigerer vedhæftede filer for %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Vedhæftede filer"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Tilføj en vedhæftet fil"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Afbryd"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Gem ændringer"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Ændrer %(username)ss e-mail"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Sikker på at brugeren '%(user_name)s' og alle relaterede medier/kommentarer skal slettes?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Ja, min konto skal slettes"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Slet permanent"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Redigerer %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Ændrer %(username)s's kontoindstillinger"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Slet min konto"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "E-mail"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Redigerer %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Redigerer %(username)s profil"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Hej,\n\nVi vil gerne sikre, at du er %(username)s. Er dette tilfældet, så følg\nvenligst henvisningen nedenfor, for at bekræfte din nye e-postadresse.\n\n%(verification_url)s\n\nHvis du ikke er %(username)s, eller ikke har forespurgt ændring af e-post, kan du ignorere denne e-mail."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Nye kommentarer"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s siden"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Markér alle som læst"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Medie mærket med: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Hent"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Beklager, denne lydfil vil ikke fungere, fordi \n\tdin webbrowser ikke understøtter \n\tHTML5-lyd."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Du kan hente en moderne webbrowser som \n\tkan afspille lyden på <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Original fil"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "WebM-fil (Vorbis-indkodning)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Oprettet"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Bilelde for %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "PDF-fil"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspektiv"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Forside"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Top"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Side"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Hent model"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Filformat"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Objektets højde"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Beklager, denne video vil ikke fungere, da\ndin webbrowser ikke understøtter HTML5-\nvideoer."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Du kan hente en moderne browser, der\n kan afspille videoen på <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "WebM-fil (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Her kan du følge status for mediet, der bliver behandlet på denne instans."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Mediet er under behandling"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Intet medie er under behandling"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Disse overførsler kunne ikke behandles:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Ingen mislykkede poster!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Seneste 10 succesfulde overførsler"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Ingen behandlede poster, endnu!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Rapport"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Rapporteret kommentar"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Ã…rsag"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\n Kommentarrapport #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Tilføj en samling"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Tilføj dit medie"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (%(username)s's samling)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s fra <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Redigér"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Sikker på at du vil slette %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Sikker på at du vil fjerne %(media_title)s fra %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Fjern"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "%(username)ss samlinger"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>s samlinger"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Hej %(username)s,\n%(comment_author)s kommenterede dit opslag, (%(comment_url)s) på %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "%(username)s's medie"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>s medie med mærket <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>s mediefil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "â– Gennemser medier fra <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Tilføj en kommentar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Tilføj denne kommentar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Forhåndsvisning af kommentar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Tilføjet"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Tilføj “%(media_title)s†til en samling"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Tilføj en ny samling"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Du kan følge tilstanden for mediet som behandles til dit galleri her."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Dine seneste 10 succesfulde overførsler"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "%(username)s's profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Her kan du fortælle andre om dig selv."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Ret profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Brugeren har ikke udfyldt sin profil (endnu)."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Gennemse samlinger"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Vis alle %(username)s's mediefiler"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Her bliver dine medier vist, men det ser ikke ud til at du har tilføjet noget endnu."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Der ser ikke ud til at være nogen mediefiler her endnu ..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Der kræves godkendelse af e-mail"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Næsten færdig! Din konto skal stadig aktiveres."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Der skulle komme email om et par øjeblikke med instrukser om hvordan."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Hvis det ikke gør:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Gensend verificeringsemail"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Nogen har tilmeldt en konto med dette brugernavn, men den mangler stadig at blive aktiveret."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Hvis du er denne person, men har mistet godkendelsesbeskeden, så kan du <a href=\"%(login_url)s\">logge ind</a> og sende den påny."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(fjern)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Indsamlet i"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Tilføj til en samling"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "Kilde-ikon"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Atom-kilde"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Alle rettigheder forbeholdes"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Nyere"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Ældre →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "GÃ¥ til side:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "nyere"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "ældre"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Mærket med"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Kunne ikke indlæse billedfilen."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Hovsa!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Der opstod en fejl"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Forkert forespørgsel"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "Forespørgslen som blev sendt til serveren er ugyldig, tjek den venligst ekstra grundigt"
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Handlingen er ikke tilladt"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "Beklager Søren, jeg kan ikke lade dig gøre det!</p><p>Du har forsøgt at udføre en funktion som du ikke har lov til at foretage. Har du nu forsøgt at slette alle brugerkontiene igen?"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Det ser ikke ud til at der er en side på denne adresse. Beklager!</p><p>Hvis du er sikker på, at adressen er korrekt, så er siden du leder efter muligvis flyttet eller slettet."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "Ã¥r"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "måned"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "uge"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "dag"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "time"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minut"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Kommentar"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Du kan anvende <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> til formatering."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Jeg er sikker på at jeg vil slette dette"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Jeg er helt sikker på at jeg vil fjerne dette element fra samlingen"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Samling"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Vælg --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Inkludér en note"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Du kan anvende\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> til formatering."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Beklager, kommentarer er slået fra."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Uups, din kommentar var uden indhold."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Din kommentar er blevet slået op!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Tjek venligst dine poster og forsøg igen."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Du skal vælge eller tilføje en samling"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" er allerede i samlingen \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" blev tiløføjet til samlingen \"%s\""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Du slettede mediet."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Mediet blev ikke slettet, fordi du ikke markerede at du var sikker."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Der er i gang med at slette en anden brugers mediefil. Fortsæt med varsomhed."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Du slettede elementet fra samlingen."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "Elementet blev ikke fjernet, fordi du ikke markerede at du var sikker."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Du er i færd med at slette et element fra en anden brugers samling. Fortsæt med varsomhed."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Du slettede samlingen \"%s\""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "Samlingen blev ikke slettet, fordi du undlod at angive at du var sikker."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Du er i færd med at slette en anden brugers samling. Fortsæt med varsomhed."
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/da/mediagoblin.po
index 8c0a10a5..a59089dc 100644
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/da/mediagoblin.po
@@ -1,132 +1,239 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# schendje <mail@jefvanschendel.nl>, 2011, 2012
-# mvanderboom <mvanderboom@gmail.com>, 2012
+# Aputsiaĸ Niels Janussen <aj@isit.gl>, 2013-2014
+# Mikkel Munch Mortensen <3xm@detfalskested.dk>, 2014
+# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012
+# Olle Jonsson <olle.jonsson@gmail.com>, 2012
+# Tanja Trudslev <tanja.trudslev@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/mediagoblin/language/nl/)\n"
+"Language-Team: Danish (http://www.transifex.com/projects/p/mediagoblin/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-"Language: nl\n"
+"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
-msgstr "Sorry, registratie is uitgeschakeld op deze instantie."
+msgstr "Desværre, registrering er ikke muligt på denne instans"
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
+msgstr "Desværre, rapportering er ikke muligt på denne instans"
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
-msgstr ""
+msgstr "Beklager, godkendelse er slået fra på denne instans."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
-msgstr ""
+msgstr "Ugyldigt brugernavn eller e-mailadresse."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
-msgstr ""
+msgstr "Dette felt accepterer ikke e-mailadresser."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
-msgstr ""
+msgstr "Dette felt kræver en e-mailadresse."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
-msgstr "Sorry, er bestaat al een gebruiker met die naam."
+msgstr "Desværre, det brugernavn er allerede brugt"
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
-msgstr "Sorry, een gebruiker met dat e-mailadres bestaat al."
+msgstr "Desværre, en bruger er allerede oprettet for den email"
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
-msgstr ""
+msgstr "Nøglen til bekræftigelse eller bruger-id er ugyldigt."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
-msgstr "Uw e-mailadres is geverifieerd. U kunt nu inloggen, uw profiel bewerken, en afbeeldingen toevoegen!"
+msgstr "Din email adresse er blevet bekræftet. Du kan nu logge på, ændre din profil, og indsende billeder!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
-msgstr "De verificatie sleutel of gebruikers-ID is onjuist"
+msgstr "Bekræftelsesnøglen eller brugerid er forkert"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
-msgstr "Je moet ingelogd zijn, anders weten we niet waar we de e-mail naartoe moeten sturen!"
+msgstr "Du er nødt til at være logget ind, så vi ved hvem vi skal emaile!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
-msgstr "Je hebt je e-mailadres al geverifieerd!"
+msgstr "Du har allerede bekræftet din email adresse!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
-msgstr "Verificatie e-mail opnieuw opgestuurd."
+msgstr "Email til godkendelse sendt igen."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
msgid "Description of this work"
-msgstr "Beschrijving van dit werk"
+msgstr "Beskrivelse af arbejdet"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr "Voor opmaak kun je <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> gebruiken."
+msgstr "Du kan bruge\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> til formattering."
#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
#: mediagoblin/submit/forms.py:45
msgid "Tags"
-msgstr "Etiket"
+msgstr "Tags"
#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
-msgstr "Hou labels gescheiden met komma's."
+msgstr "Separer tags med kommaer."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
-msgstr "Slug"
+msgstr "Webnavn"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
-msgstr "De slug kan niet leeg zijn"
+msgstr "Webnavnet kan ikke stå tomt"
#: mediagoblin/edit/forms.py:44
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr "Het titelgedeelte van het adres van deze media. Normaal gesproken hoef je deze niet te veranderen."
+msgstr "Titeldelen af dette medies adresse. Du behøver normalt ikke ændre dette."
#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr "Licentie"
+msgstr "Licens"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
@@ -134,290 +241,302 @@ msgstr "Bio"
#: mediagoblin/edit/forms.py:60
msgid "Website"
-msgstr "Website"
+msgstr "Websted"
#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
-msgstr "Dit adres bevat fouten"
+msgstr "Denne adresse indeholder fejl"
-#: mediagoblin/edit/forms.py:67
-msgid "Email me when others comment on my media"
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Email mig når andre kommenterer på mine medier"
+
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
-msgstr ""
+msgstr "Aktivér insite-notifikationer for begivenheder."
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
-msgstr ""
+msgstr "Præferencer for licens"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
-msgstr ""
+msgstr "Dette vil blive dit standardlicens i formularer til overførsler."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
-msgstr ""
+msgstr "Titlen kan ikke være tom"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
-msgstr ""
+msgstr "Beskrivelse af denne samling"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+msgstr "Titeldelen af denne samlings's adresse. Du behøver normalt ikke ændre dette."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
-msgstr "Oud wachtwoord"
+msgstr "Gammelt kodeord"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
-msgstr "Vul je oude wachtwoord in om te bewijzen dat dit jouw account is"
+msgstr "Skriv dit gamle kodeord for at bevise det er din konto."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
-msgstr "Nieuw wachtwoord"
+msgstr "Ny kodeord"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
-msgstr ""
+msgstr "Ny e-mailadresse"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
-msgstr "Wachtwoord"
+msgstr "Kodeord"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
-msgstr ""
+msgstr "Angiv dit kodeord for at bevise at du ejer denne konto."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identifikator"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Værdi"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
-msgstr "Er bestaat al een met die slug voor deze gebruiker."
+msgstr "Et post med dette webnavn findes allerede for denne bruger."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
-msgstr "U bent de media van een andere gebruiker aan het aanpassen. Ga voorzichtig te werk."
+msgstr "Du er ved at ændre en anden brugers' medier. Pas på."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
-msgstr ""
+msgstr "Du tilføjede den vedhæftede fil %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
-msgstr ""
+msgstr "Du kan kun redigere din egen profil."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "U bent een gebruikersprofiel aan het aanpassen. Ga voorzichtig te werk."
+msgstr "Du er ved at ændre en bruger's profil. Pas på."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
-msgstr "Profielaanpassingen opgeslagen"
+msgstr "Profilændringer gemt"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
-msgstr "Accountinstellingen opgeslagen"
+msgstr "Kontoindstillinger gemt"
-#: mediagoblin/edit/views.py:282
-msgid "You need to confirm the deletion of your account."
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Du skal bekræfte at du vil slette din konto."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Du har allerede en samling ved navn \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "En samling med dette webnavn findes allerede for denne bruger."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du er ved at ændre en anden bruger's samling. Pas på."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
-msgstr ""
+msgstr "Din e-mailadresse er blevet bekræftet."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
-msgstr "Verkeerd wachtwoord"
+msgstr "Forkert kodeord"
#: mediagoblin/gmg_commands/assetlink.py:60
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Kan ikke linke til tema... intet tema sat\n"
#: mediagoblin/gmg_commands/assetlink.py:73
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "Intet asset-bibliotek til dette tema\n"
#: mediagoblin/gmg_commands/assetlink.py:76
msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
+msgstr "Dog blev den symbolske henvisning til den tidligere kataloghenvisning fundet; fjernet.\n"
#: mediagoblin/gmg_commands/assetlink.py:112
#, python-format
msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
+msgstr "Kunne ikke henvise \"%s\": %s eksisterer og er ikke en symbolsk henvisning\n"
#: mediagoblin/gmg_commands/assetlink.py:119
#, python-format
msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
+msgstr "Springer over \"%s\"; allerede konfigureret.\n"
#: mediagoblin/gmg_commands/assetlink.py:124
#, python-format
msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
+msgstr "Gammel henvisning fundet for \"%s\"; fjerner.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-msgstr ""
+msgstr "For mere information om hvordan du kører dette script (og hvordan\nmetadata-CSV-filen skal formateres) henvises til MediaGoblin-\ndokumentationen om command line uploading\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "Navn på brugeren som disse medieartikler tilhører"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "Stien til CSV-filen der indeholder metadatainformation."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
-msgstr ""
+msgstr "Undlad ivrig behandlig, overlad til celery"
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Desværre, der findes ingen bruger med brugernavnet '{username}'"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "Filen ved {path} findes ikke, brug flaget -h for hjælp"
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
-msgstr ""
+msgstr "Fejl med medie '{media_id}' værdi '{error_path}': '{error_msg}'\nMetadata blev ikke uploadet."
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
-msgstr ""
+msgstr "FEJL: Den lokale fil {filename} kunne ikke tilgås.\n{filename} vil ikke blive uploadet."
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
-msgstr ""
+msgstr "{filename} er gemt!\nHusk at tjekke panelet til mediebehandling på dit website for at sikre dig at filen er korrekt uploadet."
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
-msgstr ""
+msgstr "FEJL: Denne fil er større en grænsen for uploads på dette site."
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
-msgstr ""
+msgstr "FEJL: Upload af denne fil vil overskride brugerens upload-grænse."
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "FEJL: Denne bruger har allerede overskredet sin upload-grænse."
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "{files_uploaded} ud af {files_attempted} filer blev korrekt uploadet."
#: mediagoblin/meddleware/csrf.py:134
msgid ""
"CSRF cookie not present. This is most likely the result of a cookie blocker "
"or somesuch.<br/>Make sure to permit the settings of cookies for this "
"domain."
-msgstr ""
+msgstr "CSRF-cookie er ikke til stede. Dette skyldes højst sandsynligt en blokering af cookie eller lignende.<br/>Sørg for at tillade, at der angives cookie'er for dette domæne."
#: mediagoblin/media_types/__init__.py:79
#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
-msgstr "Sorry, dat bestandstype wordt niet ondersteunt."
+msgstr "Desværre, jeg understøtter ikke den filtype :("
#: mediagoblin/media_types/blog/forms.py:26
#: mediagoblin/media_types/blog/forms.py:35
#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "Beskrivelse"
#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
-msgstr "Ik weet zeker dat ik dit wil verwijderen."
+msgstr "Jeg er sikker på at jeg vil slette dette"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
-msgstr "Mooizo! Toegevoegd!"
+msgstr "Juhuu! Delt!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Hurra! Den redigerede blogpost er gemt"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Du slettede bloggen."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Deze media was niet verwijderd omdat je niet hebt aangegeven dat je het zeker weet."
+msgstr "Mediet blev ikke slettet, fordi du ikke markerede at du var sikker."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "Du er ved at slette en anden brugers blog. Tænk dig om før du fortsætter."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Bloggen blev ikke slettet, da du ikke har rettighederne til det."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Tilføj blogpost"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Rediger blogpost"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Slet blogpost"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
-msgstr "Pas aan"
+msgstr "Redigér"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
@@ -425,23 +544,23 @@ msgstr "Pas aan"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
-msgstr "Verwijderen"
+msgstr "Slet"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> Skift til listevisning </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr "Endnu ingen blogposter"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
-msgstr "Zeker weten dat je %(title)s wil verwijderen?"
+msgstr "Sikker på at du vil slette %(title)s?"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
@@ -453,18 +572,18 @@ msgstr "Zeker weten dat je %(title)s wil verwijderen?"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
-msgstr "Annuleren"
+msgstr "Afbryd"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Delete permanently"
-msgstr "Permanent verwijderen"
+msgstr "Slet permanent"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Opret/rediger blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -473,141 +592,192 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/submit/start.html:39
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
msgid "Add"
-msgstr "Voeg toe"
+msgstr "Tilføj"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Opret/rediger en blogpost"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Opret rediger en blogpost."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "%(blog_owner_name)ss blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Vis"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Opret en blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr "Blogkontrolpanel"
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
-msgstr ""
+msgstr "unoconv kunne ikke køres, tjek logfilen"
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
-msgstr ""
+msgstr "Omkodning af video mislykkedes"
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
-msgstr ""
+msgstr "Fjern privilegiet"
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr ""
+msgstr "Bandlys denne bruger"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
-msgstr ""
+msgstr "Send en besked til brugeren"
#: mediagoblin/moderation/forms.py:24
msgid "Delete the content"
-msgstr ""
+msgstr "Slet indholdet"
#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
-msgstr ""
+msgstr "Brugeren vil blive bandlyst indtil:"
#: mediagoblin/moderation/forms.py:57
msgid "Why are you banning this User?"
-msgstr ""
+msgstr "Hvorfor bandlyser du denne bruger?"
#: mediagoblin/moderation/forms.py:109
msgid "What action will you take to resolve the report?"
-msgstr ""
+msgstr "Hvilken handling vil du foretage, for at tackle rapporten?"
#: mediagoblin/moderation/forms.py:115
msgid "What privileges will you take away?"
-msgstr ""
+msgstr "Hvilke privilegier ønsker du at fjerne?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Ã…rsag til brugerens bortvisning:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Besked til bruger:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Beslutning:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} fjernede {user}s {privilege} rettigheder."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} bortviste brugeren {user} {expiration_date}."
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "indtil {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "ubestemt tid"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} sendte en advarsels-e-mail til brugeren {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} slettede kommentaren."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} slettede medieartiklen."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
-msgstr ""
+msgstr "Advarsel fra"
#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
-msgstr ""
+msgstr "kommenterede på dit opslag"
#: mediagoblin/notifications/views.py:35
#, python-format
msgid "Subscribed to comments on %s!"
-msgstr ""
+msgstr "Abonnerede på kommentarer på %s!"
#: mediagoblin/notifications/views.py:48
#, python-format
msgid "You will not receive notifications for comments on %s."
-msgstr ""
+msgstr "Du vil ikke modtage notifikationer for kommentarer på %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
-msgstr ""
+msgstr "Der skal angives en oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
-msgstr ""
+msgstr "Ingen request token fundet."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
-msgstr ""
+msgstr "Beklager, filstørrelsen er for stor."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
+msgstr "Beklager, overførsel af denne fil vil betyde at du bryder grænsen for overførsel."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
-msgstr ""
+msgstr "Beklager, du har nået din grænse for filoverførsel."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "Angiv URL'en for mediet der skal fremhæves"
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Primær"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Sekundær"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Tertiær"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
-msgstr ""
+msgstr "-----------{display_type}-fremhævninger---------------------------\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Hvordan virker det?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "Hvordan fremhæves medier?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
@@ -620,11 +790,11 @@ msgid ""
" inside the text box, click the Submit Query button, and your media should be\n"
" displayed on the front page.\n"
" "
-msgstr ""
+msgstr "\nGå til siden med den medieartikel du til fremhæve. Kopier dens URL og\nsæt den ind på en ny linje i tekstboksen herover. Der må kun være URL pr. linje.\nURL'en du sætter ind i tekstboksen skal være under overskriften der beskriver hvor\nprominent fremhævningen skal være (enten primær, sekundær eller tertiær).\nTryk på knappen når alle de medieartikler du vil fremhæve er inde i tekstboksen.\nHerefter bør dine medieartikler blive vist på forsiden.v"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "Er der andre måder at styre fremhævede medieartikler på?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -632,7 +802,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -693,7 +863,7 @@ msgid ""
" Unfeature a media by removing its line from the above textarea and then\n"
" pressing the Submit Query button.\n"
" "
-msgstr ""
+msgstr "\nFjern fremhævningen af en medieartikel ved at fjerne dens linje fra tekstboksen ovenover og klik herefter på knappen."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
@@ -706,7 +876,7 @@ msgid ""
" you make a typo, once you press Submit Query, your media entry will NOT be\n"
" featured. Make sure that all your intended Media Entries are featured.\n"
" "
-msgstr ""
+msgstr "\nVær opmærksom på at hvis du laver slåfejl når du kopierer og indsætter en URL i tekstboksen herover, så vil din medieartikel IKKE blive fremhævet efter du har trykket på knappen. Tjek venligst efter at alle de medieartikler du forventer er fremhævet rent faktisk også er det."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
msgid ""
@@ -751,7 +921,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
#: mediagoblin/templates/mediagoblin/root.html:32
msgid "Most recent media"
-msgstr "Nieuwste media"
+msgstr "Seneste mediefil"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
@@ -761,23 +931,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -820,55 +987,55 @@ msgstr ""
#: mediagoblin/plugins/persona/forms.py:24
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
msgid "Username"
-msgstr "Gebruikersnaam"
+msgstr "Brugernavn"
#: mediagoblin/plugins/basic_auth/forms.py:32
#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
#: mediagoblin/plugins/persona/forms.py:28
#: mediagoblin/plugins/persona/forms.py:39
msgid "Email address"
-msgstr "E-mail adres"
+msgstr "Email adresse"
#: mediagoblin/plugins/basic_auth/forms.py:39
msgid "Username or Email"
-msgstr ""
+msgstr "Brugernavn eller e-mail"
#: mediagoblin/plugins/basic_auth/forms.py:46
msgid "Stay logged in"
-msgstr ""
+msgstr "Forbliv logget ind"
#: mediagoblin/plugins/basic_auth/forms.py:51
msgid "Username or email"
-msgstr "Gebruikersnaam of email-adres"
+msgstr "Brugernavn eller email"
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
"If that email address (case sensitive!) is registered an email has been sent"
" with instructions on how to change your password."
-msgstr ""
+msgstr "Hvis emailadressen (der skelnes mellem små og store bogstaver!) er en registreret, så er der blevet sendt en email med instrukser om ændring af adgangskode."
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
-msgstr ""
+msgstr "Kunne ikke finde nogen med dette brugernavn."
#: mediagoblin/plugins/basic_auth/views.py:68
msgid ""
"An email has been sent with instructions on how to change your password."
-msgstr "Een e-mail met instructies om je wachtwoord te veranderen is verstuurd."
+msgstr "En email er blevet sendt med instruktioner til at ændre dit kodeord."
#: mediagoblin/plugins/basic_auth/views.py:75
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr "Email kon niet verstuurd worden omdat je gebruikersnaam inactief is of omdat je e-mailadres nog niet geverifieerd is."
+msgstr "Vi kunne ikke sende en kodeords nulstillings email da dit brugernavn er inaktivt, eller din konto's email adresse er ikke blevet godkendt."
#: mediagoblin/plugins/basic_auth/views.py:123
msgid "The user id is incorrect."
-msgstr ""
+msgstr "Bruger-id er ugyldigt."
#: mediagoblin/plugins/basic_auth/views.py:139
msgid "You can now log in using your new password."
-msgstr "Je kunt nu inloggen met je nieuwe wachtwoord."
+msgstr "Du kan nu logge ind med dit nye kodeord."
#: mediagoblin/plugins/basic_auth/views.py:163
msgid ""
@@ -878,65 +1045,61 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:215
msgid "Your password was changed successfully"
-msgstr ""
+msgstr "Ændringen af din adgangskode blev gennemført"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
msgid "Set your new password"
-msgstr "Voer je nieuwe wachtwoord in"
+msgstr "Angiv dit nye kodeord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
msgid "Set password"
-msgstr "Wachtwoord opslaan"
+msgstr "Angiv kodeord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
#, python-format
msgid "Changing %(username)s's password"
-msgstr ""
+msgstr "Ændrer %(username)s's kodeord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
msgid "Save"
-msgstr ""
+msgstr "Gem"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
msgid "Don't have an account yet?"
-msgstr "Heeft u nog geen account?"
+msgstr "Har du endnu ikke en konto?"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
msgid "Create one here!"
-msgstr "Maak er hier een!"
+msgstr "Opret én her!"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
msgid "Change your password."
-msgstr ""
+msgstr "Skift din adgangskode."
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
msgid "Recover password"
-msgstr "Wachtwoord herstellen"
+msgstr "Generhverv dit kodeord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
msgid "Send instructions"
-msgstr "Stuur instructies"
+msgstr "Send instruktioner"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
msgid "Forgot your password?"
-msgstr "Wachtwoord vergeten?"
+msgstr "Glemt dit kodeord?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Locatie"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Bekijken op <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Vis på <a href=\"%(osm_url)s\">OpenStreetMap</a>"
#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
msgid "Sign in to create an account!"
-msgstr ""
+msgstr "Log ind for at oprette en konto!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
@@ -948,29 +1111,29 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
-msgstr ""
+msgstr "Tillad"
#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
-msgstr ""
+msgstr "Forbyd"
#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "Navn"
#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
-msgstr ""
+msgstr "Navnet af OAuth klienten"
#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
-msgstr ""
+msgstr "Dette vil være synligt for brugere, og tillader\ndine programmer at godkende som disse."
#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "Type"
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
@@ -980,154 +1143,154 @@ msgid ""
" <strong>Public</strong> - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "<strong>Fortrolig</strong> - Klienten kan foretage\n forespørgsler GNU MediaGoblin-instansen, der ikke kan\n opsnappes af brugeren (dvs. serverside-klienten).<br />\n <strong>Offentlig</strong> - Klienten kan ikke foretage fortrolige\n forespørgsler til GNU MediaGoblin-instansen (dvs. JavaScript-klient\n på klientsiden)."
#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
-msgstr ""
+msgstr "Omdirigér URI"
#: mediagoblin/plugins/oauth/forms.py:54
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
-msgstr ""
+msgstr "URI'en til viderestililng for applikationerne. Dette felt\ner <strong>påkrævet</strong> for offentlige klienter."
#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
-msgstr ""
+msgstr "Dette felt er nødvendigt for offentlige klienter"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
-msgstr ""
+msgstr "Klienten {0} er blevet registreret!"
#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
msgid "OAuth client connections"
-msgstr ""
+msgstr "OAuth-klientforbindelser"
#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
msgid "Your OAuth clients"
-msgstr ""
+msgstr "Dine OAuth-klienter"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
-msgstr ""
+msgstr "Beklager, der er allerede tilmeldt en konto med dette OpenID."
#: mediagoblin/plugins/openid/forms.py:38
msgid "OpenID"
-msgstr ""
+msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
-msgstr ""
+msgstr "Beklager, OpenID-serveren blev ikke fundet"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
-msgstr ""
+msgstr "Der blev ikke fundet en OpenID-tjeneste for %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
-msgstr ""
+msgstr "Verifikation af %s mislykkedes: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
-msgstr ""
+msgstr "Verifikation blev annulleret"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
-msgstr ""
+msgstr "Din OpenID-url blev glemt."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr ""
+msgstr "Du kan ikke slette din eneste OpenID-url, medmindre du har angivet en adgangskode"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
-msgstr ""
+msgstr "Denne OpenID er ikke registreret for denne konto."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
-msgstr ""
+msgstr "Fjernelse af OpenID blev gennemført."
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
msgid "Add an OpenID"
-msgstr ""
+msgstr "Tilføj et OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
msgid "Delete an OpenID"
-msgstr ""
+msgstr "Slet et OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
msgid "OpenID's"
-msgstr ""
+msgstr "OpenID'er"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
msgid "Log in"
-msgstr "Inloggen"
+msgstr "Log ind"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
#: mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
-msgstr "Inloggen is mislukt!"
+msgstr "Login mislykkedes!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
msgid "Log in to create an account!"
-msgstr ""
+msgstr "Log ind for at oprette en konto!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
msgid "Or login with a password!"
-msgstr ""
+msgstr "Eller log ind med et kodeord!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
msgid "Or login with OpenID!"
-msgstr ""
+msgstr "Eller log ind med OpenID!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
msgid "Or register with OpenID!"
-msgstr ""
+msgstr "Eller tilmeld dig med OpenID!"
#: mediagoblin/plugins/persona/__init__.py:90
msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
+msgstr "Beklager, der er allerede en konto med denne Persona-email."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
-msgstr ""
+msgstr "Fjernelse af Persona-emailadressen blev gennemført."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
-msgstr ""
+msgstr "Du kan ikke slette din eneste Persona-emailadresse, medmindre du har angivet en adgangskode."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
-msgstr ""
+msgstr "Denne Persona-emailadresse er ikke registreret på denne konto."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
-msgstr ""
+msgstr "Din e-postadresse for Persona blev gemt."
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
msgid "Delete a Persona email address"
@@ -1139,7 +1302,7 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
msgid "Persona's"
-msgstr ""
+msgstr "Persona'er"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
msgid "Or login with Persona!"
@@ -1149,174 +1312,174 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
-msgstr "Verkeerd bestandsformaat voor mediatype opgegeven."
+msgstr "Forkert fil for medietypen."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
#: mediagoblin/submit/forms.py:30
msgid "Max file size: {0} mb"
-msgstr ""
+msgstr "Maks. filstørrelse: {0} mb"
#: mediagoblin/submit/forms.py:34
msgid "File"
-msgstr "Bestand"
+msgstr "Fil"
#: mediagoblin/submit/forms.py:41
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr ""
+msgstr "Du kan benytte\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> til tekstformatering."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
-msgstr "U moet een bestand aangeven."
+msgstr "Du må give mig en fil"
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Samlingen \"%s\" blev tilføjet!"
#: mediagoblin/templates/mediagoblin/banned.html:20
msgid "You are Banned."
-msgstr ""
+msgstr "Du er blevet bandlyst."
#: mediagoblin/templates/mediagoblin/banned.html:24
#: mediagoblin/templates/mediagoblin/error.html:24
msgid "Image of goblin stressing out"
-msgstr ""
+msgstr "Et billede at en goblin der er stresset"
#: mediagoblin/templates/mediagoblin/banned.html:26
msgid "You have been banned"
-msgstr ""
+msgstr "Du er blevet bandlyst"
#: mediagoblin/templates/mediagoblin/banned.html:28
#, python-format
msgid "until %(until_when)s"
-msgstr ""
+msgstr "indtil %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
-msgstr "Verifieer je e-mailadres!"
+msgstr "Bekræft din email!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
-msgstr ""
+msgstr "log ud"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
+msgstr "<a href=\"%(user_url)s\">%(user_name)s</a>'s konto"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
-msgstr "Accountinstellingen aanpassen"
+msgstr "Skift kontoindstillinger"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
msgid "Media processing panel"
-msgstr "Mediaverwerkingspaneel"
+msgstr "Panel til mediebehandling"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
-msgstr ""
+msgstr "Log ud"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
-msgstr "Voeg media toe"
+msgstr "Tilføj medie"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
+msgstr "Opret ny samling"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/authorize.html:21
msgid "Authorization"
-msgstr ""
+msgstr "Godkendelse"
#: mediagoblin/templates/mediagoblin/api/authorize.html:26
#: mediagoblin/templates/mediagoblin/api/authorize.html:53
msgid "Authorize"
-msgstr ""
+msgstr "Godkend"
#: mediagoblin/templates/mediagoblin/api/authorize.html:29
msgid "You are logged in as"
-msgstr ""
+msgstr "Du er logget ind som"
#: mediagoblin/templates/mediagoblin/api/authorize.html:33
msgid "Do you want to authorize "
-msgstr ""
+msgstr "Ønsker du at godkende"
#: mediagoblin/templates/mediagoblin/api/authorize.html:37
msgid "an unknown application"
-msgstr ""
+msgstr "et ukendt program"
#: mediagoblin/templates/mediagoblin/api/authorize.html:39
msgid " to access your account? "
-msgstr ""
+msgstr "for at tilgå din konto?"
#: mediagoblin/templates/mediagoblin/api/authorize.html:41
msgid "Applications with access to your account can: "
-msgstr ""
+msgstr "Programmer med adgang til din konto kan:"
#: mediagoblin/templates/mediagoblin/api/authorize.html:43
msgid "Post new media as you"
-msgstr ""
+msgstr "Afsend nyt medie som dig selv"
#: mediagoblin/templates/mediagoblin/api/authorize.html:44
msgid "See your information (e.g profile, media, etc...)"
-msgstr ""
+msgstr "Se dine informationer (dvs. profil, medie, osv.)"
#: mediagoblin/templates/mediagoblin/api/authorize.html:45
msgid "Change your information"
-msgstr ""
+msgstr "Tilpas dine informationer"
#: mediagoblin/templates/mediagoblin/api/oob.html:21
msgid "Authorization Finished"
-msgstr ""
+msgstr "Godkendelse er afsluttet"
#: mediagoblin/templates/mediagoblin/api/oob.html:26
msgid "Authorization Complete"
-msgstr ""
+msgstr "Godkendelse er udført"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "Maak een account aan!"
+msgstr "Opret en konto!"
#: mediagoblin/templates/mediagoblin/auth/register.html:41
msgid "Create"
-msgstr "Creëer"
+msgstr "Opret"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -1327,14 +1490,14 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "Hallo %(username)s , open de volgende URL in uw webbrowser om uw GNU MediaGoblin account te activeren: %(verification_url)s "
+msgstr "Hej %(username)s,\n\nfor at aktivere din GNU MediaGoblin-konto, åbner du følgende\nadresse i din webbrowser:\n\n%(verification_url)s"
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
#, python-format
msgid ""
"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr ""
+msgstr "Drevet af <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, et <a href=\"http://gnu.org/\">GNU</a>-projekt."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
@@ -1342,7 +1505,7 @@ msgid ""
"Released under the <a "
"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Uitgegeven onder de <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>-licentie. <a href=\"%(source_link)s\">Broncode</a> available."
+msgstr "Udgivet under licenset <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Kildekoden</a> er tilgængelig."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
msgid "Terms of Service"
@@ -1350,27 +1513,27 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
msgid "Explore"
-msgstr "Verkennen"
+msgstr "Udforsk"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Hoi, welkom op deze MediaGoblin website!"
+msgstr "Hey, velkommen til denne MediaGoblin side!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
-msgstr "Deze website draait <a href=\"http://mediagoblin.org\">MediaGoblin</a>, een buitengewoon goed stuk software voor mediahosting."
+msgstr "Dette sted kører <a href=\"http://mediagoblin.org\">MediaGoblin</a>, et særdeles godt stykke software til hosting af medier."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
-msgstr ""
+msgstr "For at tilføje dine egne medier, skrive kommentarer, og mere, du kan logge ind med din MediaGoblin konto."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
-msgstr "Heb je er nog geen? Het is heel eenvoudig!"
+msgstr "Har du ikke en endnu? Det er let!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
msgid ""
@@ -1394,18 +1557,18 @@ msgstr "MediaGoblin logo"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
#, python-format
msgid "Editing attachments for %(media_title)s"
-msgstr ""
+msgstr "Redigerer vedhæftede filer for %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
-msgstr ""
+msgstr "Vedhæftede filer"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
-msgstr ""
+msgstr "Tilføj en vedhæftet fil"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
@@ -1413,53 +1576,94 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
-msgstr "Wijzigingen opslaan"
+msgstr "Gem ændringer"
#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
#, python-format
msgid "Changing %(username)s's email"
+msgstr "Ændrer %(username)ss e-mail"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s siden"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr ""
+msgstr "Sikker på at brugeren '%(user_name)s' og alle relaterede medier/kommentarer skal slettes?"
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
msgid "Yes, really delete my account"
-msgstr ""
+msgstr "Ja, min konto skal slettes"
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
msgid "Editing %(media_title)s"
-msgstr "%(media_title)s aanpassen"
+msgstr "Redigerer %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
-msgstr "%(username)ss accountinstellingen aanpassen"
+msgstr "Ændrer %(username)s's kontoindstillinger"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
msgid "Delete my account"
-msgstr ""
+msgstr "Slet min konto"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
-msgstr ""
+msgstr "E-mail"
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+msgstr "Redigerer %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "Het profiel aanpassen van %(username)s"
+msgstr "Redigerer %(username)s profil"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
@@ -1494,28 +1698,15 @@ msgid ""
"\n"
"If you are not %(username)s or didn't request an email change, you can ignore\n"
"this email."
-msgstr ""
+msgstr "Hej,\n\nVi vil gerne sikre, at du er %(username)s. Er dette tilfældet, så følg\nvenligst henvisningen nedenfor, for at bekræfte din nye e-postadresse.\n\n%(verification_url)s\n\nHvis du ikke er %(username)s, eller ikke har forespurgt ændring af e-post, kan du ignorere denne e-mail."
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
msgid "New comments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
+msgstr "Nye kommentarer"
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
-msgstr ""
+msgstr "Markér alle som læst"
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -1523,147 +1714,185 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr "Media met het label: %(tag_name)s"
+msgstr "Medie mærket med: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
-msgstr ""
+msgstr "Hent"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
-msgstr "Origineel"
+msgstr "Original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Sorry, dit geluidsfragment zal niet werken omdat\n»uw web-browser geen HTML5 ondersteuntâŽ\n»audio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "U kunt een moderne web-browser die \n\taudio kan afspelen vinden op <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
-msgstr ""
+msgstr "Original fil"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
-msgstr ""
+msgstr "WebM-fil (Vorbis-indkodning)"
#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
msgid "Created"
-msgstr ""
+msgstr "Oprettet"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
-msgstr "Afbeelding voor %(media_title)s"
+msgstr "Bilelde for %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
-msgstr ""
+msgstr "PDF-fil"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
-msgstr ""
+msgstr "Perspektiv"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
-msgstr ""
+msgstr "Forside"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
-msgstr ""
+msgstr "Top"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
-msgstr ""
+msgstr "Side"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
-msgstr ""
+msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
-msgstr ""
+msgstr "Hent model"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "Filformat"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
-msgstr ""
+msgstr "Objektets højde"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
-msgstr ""
+msgstr "Beklager, denne video vil ikke fungere, da\ndin webbrowser ikke understøtter HTML5-\nvideoer."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
-msgstr ""
+msgstr "Du kan hente en moderne browser, der\n kan afspille videoen på <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
-msgstr ""
+msgstr "WebM-fil (VP8/Vorbis)"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "Her kan du følge status for mediet, der bliver behandlet på denne instans."
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
msgid "Media in-processing"
-msgstr "Media te verwerken"
+msgstr "Mediet er under behandling"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
-msgstr "Geen media om te verwerken"
+msgstr "Intet medie er under behandling"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
msgid "These uploads failed to process:"
-msgstr "Deze toevoegingen konden niet verwerkt worden:"
+msgstr "Disse overførsler kunne ikke behandles:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Ingen mislykkede poster!"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
msgid "Last 10 successful uploads"
+msgstr "Seneste 10 succesfulde overførsler"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Ingen behandlede poster, endnu!"
#: mediagoblin/templates/mediagoblin/moderation/report.html:27
msgid "Sorry, no such report found."
@@ -1674,13 +1903,13 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
-msgstr ""
+msgstr "Rapport"
#: mediagoblin/templates/mediagoblin/moderation/report.html:38
msgid "Reported comment"
-msgstr ""
+msgstr "Rapporteret kommentar"
#: mediagoblin/templates/mediagoblin/moderation/report.html:83
#, python-format
@@ -1700,6 +1929,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1755,7 +1988,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
msgid "Reason"
-msgstr ""
+msgstr "Ã…rsag"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
#, python-format
@@ -1763,7 +1996,7 @@ msgid ""
"\n"
" Comment Report #%(report_id)s\n"
" "
-msgstr ""
+msgstr "\n Kommentarrapport #%(report_id)s\n "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
#, python-format
@@ -1818,7 +2051,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
msgid "Email verification needed"
-msgstr "Emailverificatie is nodig"
+msgstr "Der kræves godkendelse af e-mail"
#: mediagoblin/templates/mediagoblin/moderation/user.html:55
msgid ""
@@ -1832,7 +2065,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
#, python-format
msgid "%(username)s's profile"
-msgstr "Profiel van %(username)s"
+msgstr "%(username)s's profil"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
@@ -1846,18 +2079,18 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:78
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "This user hasn't filled in their profile (yet)."
-msgstr "Deze gebruiker heeft zijn of haar profiel (nog) niet ingevuld."
+msgstr "Brugeren har ikke udfyldt sin profil (endnu)."
#: mediagoblin/templates/mediagoblin/moderation/user.html:89
#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
msgid "Edit profile"
-msgstr "Profiel aanpassen."
+msgstr "Ret profil"
#: mediagoblin/templates/mediagoblin/moderation/user.html:96
#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
msgid "Browse collections"
-msgstr ""
+msgstr "Gennemse samlinger"
#: mediagoblin/templates/mediagoblin/moderation/user.html:105
#, python-format
@@ -1949,10 +2182,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1967,12 +2196,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
-msgstr ""
+msgstr "Tilføj en samling"
#: mediagoblin/templates/mediagoblin/submit/start.html:28
#: mediagoblin/templates/mediagoblin/submit/start.html:35
msgid "Add your media"
-msgstr "Voeg media toe"
+msgstr "Tilføj dit medie"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
@@ -1980,29 +2209,29 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
-msgstr "Geef een reactie"
+msgstr "Tilføj en kommentar"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
-msgstr "Voeg dit bericht toe"
+msgstr "Tilføj denne kommentar"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
-msgstr ""
+msgstr "Tilføjet"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (%(username)s's samling)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "%(collection_title)s fra <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
@@ -2022,77 +2251,77 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr ""
+msgstr "Sikker på at du vil fjerne %(media_title)s fra %(collection_title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
msgid "Remove"
-msgstr ""
+msgstr "Fjern"
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
#, python-format
msgid "%(username)s's collections"
-msgstr ""
+msgstr "%(username)ss samlinger"
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr ""
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>s samlinger"
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
+msgstr "Hej %(username)s,\n%(comment_author)s kommenterede dit opslag, (%(comment_url)s) på %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
-msgstr "Media van %(username)s"
+msgstr "%(username)s's medie"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
#, python-format
msgid ""
"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr ""
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>s medie med mærket <a href=\"%(tag_url)s\">%(tag)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Media van <a href=\"%(user_url)s\"> %(username)s </a>"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>s mediefil"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "â– Blader door media van <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Gennemser medier fra <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
-msgstr ""
+msgstr "Forhåndsvisning af kommentar"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
msgid "Add “%(media_title)s†to a collection"
-msgstr ""
+msgstr "Tilføj “%(media_title)s†til en samling"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Tilføj en ny samling"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr "Hier kun je de status zien van de media die verwerkt worden."
+msgstr "Du kan følge tilstanden for mediet som behandles til dit galleri her."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Dine seneste 10 succesfulde overførsler"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
msgid "<h2>File a Report</h2>"
@@ -2121,102 +2350,114 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
-msgstr "Hier is een plekje om anderen over jezelf te vertellen."
+msgstr "Her kan du fortælle andre om dig selv."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Bekijk alle media van %(username)s"
+msgstr "Vis alle %(username)s's mediefiler"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
-msgstr "Dit is waar je nieuwe media zal verschijnen, maar het lijkt erop dat je nog niets heb toegevoegd."
+msgstr "Her bliver dine medier vist, men det ser ikke ud til at du har tilføjet noget endnu."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
-msgstr "Het lijkt erop dat er nog geen media is."
+msgstr "Der ser ikke ud til at være nogen mediefiler her endnu ..."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
msgid "Almost done! Your account still needs to be activated."
-msgstr "Bijna klaar! Je account moet nog geactiveerd worden."
+msgstr "Næsten færdig! Din konto skal stadig aktiveres."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Een e-mail zou in een paar ogenblikken aan moeten komen met instructies hiertoe."
+msgstr "Der skulle komme email om et par øjeblikke med instrukser om hvordan."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
msgid "In case it doesn't:"
-msgstr "Zoniet:"
+msgstr "Hvis det ikke gør:"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
msgid "Resend verification email"
-msgstr "Stuur de verificatie e-mail opnieuw op."
+msgstr "Gensend verificeringsemail"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
-msgstr "Iemand heeft een account met deze gebruikersnaam gemaakt, maar hij moet nog geactiveerd worden."
+msgstr "Nogen har tilmeldt en konto med dette brugernavn, men den mangler stadig at blive aktiveret."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Als u die persoon bent, maar de verificatie e-mail verloren hebt, kunt u <a href=\"%(login_url)s\">inloggen</a> en hem nogmaals verzenden."
+msgstr "Hvis du er denne person, men har mistet godkendelsesbeskeden, så kan du <a href=\"%(login_url)s\">logge ind</a> og sende den påny."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
-msgstr ""
+msgstr "(fjern)"
#: mediagoblin/templates/mediagoblin/utils/collections.html:21
msgid "Collected in"
-msgstr ""
+msgstr "Indsamlet i"
#: mediagoblin/templates/mediagoblin/utils/collections.html:40
msgid "Add to a collection"
+msgstr "Tilføj til en samling"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
msgstr ""
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
-msgstr "feed icoon"
+msgstr "Kilde-ikon"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
-msgstr "Atom feed"
+msgstr "Atom-kilde"
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
-msgstr "Alle rechten voorbehouden"
+msgstr "Alle rettigheder forbeholdes"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "↠Newer"
-msgstr "↠Nieuwer"
+msgstr "↠Nyere"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr "Ouder →"
+msgstr "Ældre →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
-msgstr "Ga naar pagina:"
+msgstr "GÃ¥ til side:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr "nieuwer"
+msgstr "nyere"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr "ouder"
+msgstr "ældre"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Placering"
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
@@ -2224,170 +2465,170 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr "Getagged met"
+msgstr "Mærket med"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
-msgstr "Kon het afbeeldingsbestand niet lezen."
+msgstr "Kunne ikke indlæse billedfilen."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
-msgstr "Oeps!"
+msgstr "Hovsa!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
-msgstr ""
+msgstr "Der opstod en fejl"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
-msgstr ""
+msgstr "Forkert forespørgsel"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
-msgstr ""
+msgstr "Forespørgslen som blev sendt til serveren er ugyldig, tjek den venligst ekstra grundigt"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
-msgstr ""
+msgstr "Handlingen er ikke tilladt"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
-msgstr ""
+msgstr "Beklager Søren, jeg kan ikke lade dig gøre det!</p><p>Du har forsøgt at udføre en funktion som du ikke har lov til at foretage. Har du nu forsøgt at slette alle brugerkontiene igen?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
" deleted."
-msgstr ""
+msgstr "Det ser ikke ud til at der er en side på denne adresse. Beklager!</p><p>Hvis du er sikker på, at adressen er korrekt, så er siden du leder efter muligvis flyttet eller slettet."
#: mediagoblin/tools/timesince.py:62
msgid "year"
-msgstr ""
+msgstr "Ã¥r"
#: mediagoblin/tools/timesince.py:63
msgid "month"
-msgstr ""
+msgstr "måned"
#: mediagoblin/tools/timesince.py:64
msgid "week"
-msgstr ""
+msgstr "uge"
#: mediagoblin/tools/timesince.py:65
msgid "day"
-msgstr ""
+msgstr "dag"
#: mediagoblin/tools/timesince.py:66
msgid "hour"
-msgstr ""
+msgstr "time"
#: mediagoblin/tools/timesince.py:67
msgid "minute"
-msgstr ""
+msgstr "minut"
#: mediagoblin/user_pages/forms.py:23
msgid "Comment"
-msgstr ""
+msgstr "Kommentar"
#: mediagoblin/user_pages/forms.py:25
msgid ""
"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
"target=\"_blank\">Markdown</a> for formatting."
-msgstr ""
+msgstr "Du kan anvende <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> til formatering."
#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
-msgstr ""
+msgstr "Jeg er helt sikker på at jeg vil fjerne dette element fra samlingen"
#: mediagoblin/user_pages/forms.py:39
msgid "Collection"
-msgstr ""
+msgstr "Samling"
#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
-msgstr ""
+msgstr "-- Vælg --"
#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "Inkludér en note"
#: mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
" Markdown</a> for formatting."
-msgstr ""
+msgstr "Du kan anvende\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> til formatering."
#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
-msgstr ""
+msgstr "Beklager, kommentarer er slået fra."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
-msgstr "Oeps, je bericht was leeg."
+msgstr "Uups, din kommentar var uden indhold."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
-msgstr "Je bericht is geplaatst!"
+msgstr "Din kommentar er blevet slået op!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
-msgstr ""
+msgstr "Tjek venligst dine poster og forsøg igen."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
-msgstr ""
+msgstr "Du skal vælge eller tilføje en samling"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" er allerede i samlingen \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s\" blev tiløføjet til samlingen \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
-msgstr "Je hebt deze media verwijderd."
+msgstr "Du slettede mediet."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Je staat op het punt de media van iemand anders te verwijderen. Pas op."
+msgstr "Der er i gang med at slette en anden brugers mediefil. Fortsæt med varsomhed."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Du slettede elementet fra samlingen."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "Elementet blev ikke fjernet, fordi du ikke markerede at du var sikker."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Du er i færd med at slette et element fra en anden brugers samling. Fortsæt med varsomhed."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Du slettede samlingen \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Samlingen blev ikke slettet, fordi du undlod at angive at du var sikker."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du er i færd med at slette en anden brugers samling. Fortsæt med varsomhed."
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 85cdc0d7..00000000
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/de/mediagoblin.po
index 8b7b2abd..e313ad29 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/de/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,263 +7,404 @@
# cwebber <cwebber@dustycloud.org>, 2011
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011-2012
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2013
+# Ettore Atalan <atalanttore@googlemail.com>, 2014
+# fleischwolf <flow@vaggi.org>, 2014
# Jakob Kramer <jakob.kramer@gmx.de>, 2011, 2012
# Jakob Kramer <jakob.kramer@gmx.de>, 2012-2013
# Jan-Christoph Borchardt <hey@jancborchardt.net>, 2011
# Jan-Christoph Borchardt <hey@jancborchardt.net>, 2011, 2012
+# janssen <jan-transifex@aurka.com>, 2014
+# Kaligule <Kaligule@googlemail.com>, 2014, 2015.
# Keyzo <kyoo@kyoo.ch>, 2011
# Marc Riese <marc@k-fx.de>, 2013
# Marc Riese <marc@k-fx.de>, 2013
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011
-# davidak <post@davidak.de>, 2014
+# davidak <post@davidak.de>, 2014, 2015.
# Artopal <artopal@fastmail.fm>, 2011
# spaetz <sebastian@sspaeth.de>, 2014
# spaetz <sebastian@sspaeth.de>, 2012
# Vinzenz Vietzke <vinz@vinzv.de>, 2012
# Vinzenz Vietzke <vinz@vinzv.de>, 2011
+# onEarth <mame@plattform32.de>, 2015.
+# cybercow <cybercow@triangulum.uberspace.de>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-03-22 12:05+0000\n"
-"Last-Translator: davidak <post@davidak.de>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/mediagoblin/language/de/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-09-13 09:54+0000\n"
+"Last-Translator: cybercow <cybercow@triangulum.uberspace.de>\n"
+"Language-Team: German "
+"(http://www.transifex.com/projects/p/mediagoblin/language/de/)\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1442138058.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
-msgstr "Benutzerregistrierung ist auf diesem Server leider deaktiviert."
+msgstr ""
+"Sorry, die Benutzerregistrierung ist auf diesem Server leider deaktiviert."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr "Das Melden ist auf dieser Instanz leider deaktiviert."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "Authentifizierung ist auf dieser Instanz leider deaktiviert."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Ungültiger Benutzername oder E-Mail-Adresse."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Dieses Feld akzeptiert keine E-Mail-Adressen."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Dieses Feld benötigt eine gültige E-Mail-Adresse."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Leider gibt es bereits einen Benutzer mit diesem Namen."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Leider gibt es bereits einen Benutzer mit dieser E-Mail-Adresse."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "Der Bestätigungsschlüssel oder die Benutzer-ID stimmen nicht."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
-msgstr "Dein GNU MediaGoblin Konto wurde hiermit aktiviert. Du kannst dich jetzt anmelden, dein Profil bearbeiten und Medien hochladen."
+msgstr ""
+"Dein GNU MediaGoblin Konto wurde hiermit aktiviert. Du kannst dich jetzt "
+"anmelden, dein Profil bearbeiten und Medien hochladen!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Der Aktivierungsschlüssel oder die Nutzerkennung ist falsch."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
-msgstr "Du musst angemeldet sein, damit wir wissen, an wen die E-Mail gesendet werden soll."
+msgstr ""
+"Du musst angemeldet sein, damit wir wissen, an wen die E-Mail gesendet "
+"werden soll!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Deine E-Mail-Adresse wurde bereits aktiviert."
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Aktivierungsmail wurde erneut versandt."
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} hat {object} hinzugefügt"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} hat {object} zu {target} hinzugefügt"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} hat {object} erstellt"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} hat {object} erstellt"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} hat {object} gelöscht"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} mag {object} nicht"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} favorisierte {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} folgt {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} mag {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} hat {object} veröffentlicht"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} hat {object} auf {target} veröffentlicht"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} hat {object} freigegeben"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} favorisiert nicht mehr {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} folgt {object} nicht mehr"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} mag {object} nicht mehr"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} teilt nicht mehr {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} hat {object} aktualisiert"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} hat {object} getagt"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "ein Bild"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "ein Kommentar"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "eine Sammlung"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "ein Video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "Audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "eine Person"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "ein Objekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
msgid "Description of this work"
msgstr "Beschreibung des Werkes"
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr "Für Formatierung kannst du\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> benutzen."
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
msgid "Tags"
msgstr "Schlagwörter"
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
msgstr "Getrennt durch Kommata"
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Kurztitel"
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Bitte gib einen Kurztitel ein"
-#: mediagoblin/edit/forms.py:42
+#: mediagoblin/edit/forms.py:44
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
msgstr "Der Titelteil der Medienadresse. Normalerweise muss hier nichts geändert werden."
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
msgstr "Lizenz"
-#: mediagoblin/edit/forms.py:52
+#: mediagoblin/edit/forms.py:54
msgid "Bio"
msgstr "Biographie"
-#: mediagoblin/edit/forms.py:58
+#: mediagoblin/edit/forms.py:60
msgid "Website"
msgstr "Webseite"
-#: mediagoblin/edit/forms.py:60
+#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
msgstr "Die URL ist nicht gültig. Bitte überprüf sie nochmal..."
-#: mediagoblin/edit/forms.py:65
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Heimatort"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Mir eine E-Mail schicken, wenn andere meine Medien kommentieren"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Aktiviere innerhalb Benachrichtigungen über Ereignisse."
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Bevorzugte Lizenz"
-#: mediagoblin/edit/forms.py:75
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Dies wird deine Standardlizenz für neue Uploads sein."
-#: mediagoblin/edit/forms.py:88
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Der Titel darf nicht leer sein"
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Beschreibung dieser Sammlung"
-#: mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Der Titelteil dieser Sammlungsadresse. Du musst ihn normalerweise nicht ändern."
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Altes Passwort"
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Gib dein altes Passwort ein, um zu bestätigen, dass du der Besitzer dieses Kontos bist."
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Neues Passwort"
-#: mediagoblin/edit/forms.py:117
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Neue E-Mail-Adresse"
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Passwort"
-#: mediagoblin/edit/forms.py:123
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Gib Dein Passwort ein, um zu bestätigen, dass Du dieses Konto besitzt."
-#: mediagoblin/edit/views.py:73
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Bezeichner"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Wert"
+
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Diesen Kurztitel hast du bereits vergeben."
-#: mediagoblin/edit/views.py:91
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Du bearbeitest die Medien eines anderen Nutzers. Sei bitte vorsichtig."
-#: mediagoblin/edit/views.py:161
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Du hast den Anhang %s hinzugefügt!"
-#: mediagoblin/edit/views.py:188
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Du kannst nur dein eigenes Profil bearbeiten."
-#: mediagoblin/edit/views.py:194
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Du bearbeitest das Profil eines anderen Nutzers. Sei bitte vorsichtig."
-#: mediagoblin/edit/views.py:210
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Das Profil wurde aktualisiert"
-#: mediagoblin/edit/views.py:243
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Kontoeinstellungen gespeichert"
-#: mediagoblin/edit/views.py:277
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Unbekannte Anwendung, Berechtigung kann nicht entzogen werden"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Berechtigung für Anwendung wurde entzogen"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Du musst die Löschung deines Kontos noch bestätigen."
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Du hast bereits eine Sammlung mit dem Namen \"%s\"!"
-#: mediagoblin/edit/views.py:317
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Eine Sammlung mit diesem Kurztitel existiert bereits für diesen Benutzer."
-#: mediagoblin/edit/views.py:332
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Du bearbeitest die Sammlung eines anderen Benutzers. Sei vorsichtig."
-#: mediagoblin/edit/views.py:373
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Deine E-Mail-Adresse wurde verifiziert."
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Falsches Passwort"
@@ -294,6 +435,69 @@ msgstr "Überspringe \"%s\"; bereits eingerichtet.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Alte Verknüpfung für \"%s\" gefunden; wird entfernt.\n"
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Für mehr Informationen wie man dieses Skript richtig ausführt (und über das Format von der csv Datei) lies die MediaGoblin Dokumentationsseite zumHochladen per Komandozeile\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Der Name des Benutzers, dem diese Medien gehören"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Pfad zur csv Datei mit den Metadaten."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Tut uns leid, es gibt keinen Nutzer '{username}' "
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Die Datei wurde unter {Path} nicht gefunden, benutze die -h Flag für Hilfe"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Fehler bei Medium '{media_id}' Wert '{error_path}': {error_msg}\nMetadaten wurden nicht hochgeladen."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "Fehlgeschlagen: Zugriff auf lokale Datei {filename} verweigert.\n{filename} wird nicht hochgeladen. "
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr "Erfolgreich {filename} übermittelt!\nBitte schaue Dir die Medien-Verarbeitungsübersicht an, um sicherzugehen,\ndass es korrekt hochgeladen wurde."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "FEHLER: Diese Datei ist größer als das Hochlad-Limit für diese Seite."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "FEHLER: Die Datei wird das Hochlad-Limit des Benutzers überschreiten."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "FEHLER: Dieser Benutzer hat das Hochlad-Limit bereits erreicht."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} aus {files_attempted} Dateien wurden erfolgreich hochgeladen"
+
#: mediagoblin/meddleware/csrf.py:134
msgid ""
"CSRF cookie not present. This is most likely the result of a cookie blocker "
@@ -301,11 +505,147 @@ msgid ""
"domain."
msgstr "Das CSRF cookie ist nicht vorhanden. Das liegt vermutlich an einem Cookie-Blocker oder ähnlichem.<br/>Bitte stelle sicher, dass Cookies von dieser Domäne erlaubt sind."
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
msgstr "Dieser Dateityp wird leider nicht unterstützt."
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Beschreibung"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Ja, wirklich löschen"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "JAAA! Geschafft!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Woohoo! Die Änderung am Blogeintrag ist durchgeführt."
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Du hast den Blog gelöscht."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Das Medium wurde nicht gelöscht, da Du die Löschung nicht bestätigt hast."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Du bist daran, einen Blog von einem anderen Benutzer zu löschen. Bitte sei vorsichtig."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Der Blog wurde nicht gelöscht, weil du keine Rechte für diesen Vorgang hast."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Einen Blogeintrag hinzufügen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Blog editieren"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Blog löschen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Löschen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Gehe zur Listenansicht</em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Noch kein Blogeintrag vorhanden."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Möchtest du %(title)s wirklich löschen?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Endgültig löschen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Erstelle/Editiere einen Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Erstelle/Editiere einen Blogeintrag."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Erstelle/Editiere einen Blogeintrag."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Blog von %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Zeige"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Erstelle einen Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr "Blog Übersicht"
+
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
msgstr "unoconv konnte nicht ausgeführt werden, überprüfe Logdatei"
@@ -346,7 +686,58 @@ msgstr "Welche Maßnahme wirst du ergreifen, um die Meldung zu klären?"
msgid "What privileges will you take away?"
msgstr "Welche Rechte wirst du entziehen?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Der Benutzer wurde gesperrt, denn:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Nachricht zum Benutzer:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Auflösungsinhalt:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} hat {user} die {privilege} Privilegien entzogen."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} hat Benutzer {user} verbannt {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "bis {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "unbefristet"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} hat eine Verwarnung an {user} geschickt."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} hat den Kommentar gelöscht."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} hat diesen Eintrag gelöscht\n\n."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Warnung von"
@@ -368,25 +759,269 @@ msgstr "Du wirst keine Benachrichtigungen für Kommentare zu %s mehr erhalten."
msgid "Must provide an oauth_token."
msgstr "Ein OAuth-Token muss bereitgestellt werden."
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "Kein Anfrage-Token gefunden."
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "Die Datei ist zu groß."
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "Das Hochladen dieser Datei würde dein Upload-Limit überschreiten."
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "Du hast dein Upload-Limit erreicht."
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Trage den URL für das Medium ein, um es hervorzuheben"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "Primär"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Sekundär"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Tertiär"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-Funktionen---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Wie funktioniert's?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Wie hebe ich ein Medium hervor?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr "\nGehe zur Seite des Mediums, das hervorgehoben werden soll. Kopiere den URL und\nfüge ihn in eine neue Zeile in der obigen Textbox ein. Es sollte nur\neinen URL pro Zeile geben. Der URL, den Du in die Box eingefügt hast, sollte unterhalb\nder Überschrift stehen die beschreibt, wie stark hervorgehoben das Medium sein soll (ob an erster,\nzweiter oder dritter Stelle). Wenn alle Medien die Du hervorheben möchtest in der Textbox eingetragen sind, klicke die Übermitteln-Schaltfläche. Deine Medien sollten nun\nauf der Startseite angezeigt werden.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "Gibt es eine andere Möglichkeit hervorgehobene Medien zu verwalten?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+#, fuzzy
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+"\n"
+" Ja. Wenn du es vorziehst kannst du die Medienseite des Mediums "
+"besuchen, das du hervorheben oder nicht mehr hervorheben möchtest, und auf "
+"dessen Seitenleiste schauen. Wenn das Medium noch nicht hervorgehoben wurde, "
+"solltest du eine \"hervorheben\" Schaltfläche sehen. Klicke auf diese "
+"Schaltfläche und das Medium wird als Primary Feature oben auf der Seite "
+"angezeigt werden. Alle anderen hervorgehobenen Medien bleiben hervorgehoben, "
+"werden aber nach hinten rücken. <br/><br/>\n"
+"\n"
+" Wenn du die Medienseite eines Mediums welches im Moment "
+"hervorgehoben ist, wirst du an der Stelle an der zuvor die Schaltfläche "
+"\"hervorheben\" war die Optionen "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "Was ist eine Hervorhebung an erster Stelle? Was eine Hervorhebung an zweiter Stelle?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr "Der Zweite Teil fehlt"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr "Wie entscheiden welche Informationen angezeigt werden, wenn ein Medium\nhervorgehoben wird?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Wie die Hervorhebung eines Mediums aufheben?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr "\nHebe die Hervorhebung eines Mediums auf, indem Du in der obigen Textbox\ndie entsprechende Zeile entfernst, und dann die Übermitteln-Schaltfläche klickst.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "ACHTUNG:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr "\nWenn Du URLs in die obige Textbox kopierst und einfügst beachte,\ndass bei einem Tippfehler nach einem Klick auf die Übermitteln-Schaltfläche\nDein Medium nicht hervorgehoben werden wird. "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr "\nMedium hervorheben"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "featuren"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr "\nMedium nicht mehr hervorheben"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "entfeaturen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr "\nHervorhebung hochzustufen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Erhöhen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr "\nHervorhebung herabstufen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Herabstufen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Neuste Medien"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "Momentan ist kein Medium hervorgehoben."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr "Wenn Du ein Medium hervorheben\nmöchtest, gehe zur Hauptseite des Mediums und klicke\nauf die Schaltfläche die sagt <a class=\"button_action\">Hervorheben</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr "Du siehst diese Seite, weil Du ein Benutzer bist,\nder Medien hervorheben darf. Ein normaler Benutzer würde eine leere Seite sehen, also stelle sicher,\ndass Du Medien hervorgehoben hast solange auf Deiner Instanz\ndas 'archivalook' Plugin aktiviert ist.\nEin weiter entwickeltes Werkzeug um Hervorhebungen zu verwalten findest\nDu in der <a href=\"%(featured_media_url)s\">Hervorhebungsverwaltung.</a> "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Neu hinzugefügte Medien ansehen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Hervorhebungsverwaltung"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr "Diese Audiodatei kann nicht abgespielt werden,\nweil Dein Webbrowser kein HTML5-Audio unterstützt."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "Du kannst einen modernen Webbrowser, der\ndiese Audiodatei abspielen kann, unter\n<a href=\"http://getfirefox.com\">http://getfirefox.com</a> herunterladen!"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Dieses Video kann nicht abgespielt werden,\nweil Dein Webbrowser kein HTML5-Video unterstützt."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Du kannst einen modernen Webbrowser, der\ndieses Video abspielen kann, unter \n<a href=\"http://getfirefox.com\">\nhttp://getfirefox.com</a> herunterladen!"
+
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
#: mediagoblin/plugins/persona/forms.py:24
@@ -497,11 +1132,7 @@ msgstr "Anweisungen senden"
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Aufnahmeort"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "In <a href=\"%(osm_url)s\">OpenStreetMap</a> öffnen"
@@ -510,6 +1141,14 @@ msgstr "In <a href=\"%(osm_url)s\">OpenStreetMap</a> öffnen"
msgid "Sign in to create an account!"
msgstr "Anmelden um ein Konto zu erstellen!"
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadaten"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Metadaten bearbeiten"
+
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Erlauben"
@@ -526,10 +1165,6 @@ msgstr "Name"
msgid "The name of the OAuth client"
msgstr "Der Name des OAuth-Clients"
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Beschreibung"
-
#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
@@ -564,7 +1199,7 @@ msgstr "Die Weiterleitungs-URI für die Anwendung, dieses Feld\n ist
msgid "This field is required for public clients"
msgstr "Dieses Feld ist Pflicht für öffentliche Clients"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Der Client {0} wurde erfolgreich registriert!"
@@ -576,17 +1211,9 @@ msgstr "OAuth-Client-Verbindungen"
msgid "Your OAuth clients"
msgstr "Deine OAuth-Clients"
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Hinzufügen"
-
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Mit dieser OpenID wurde bereits ein Konto registriert."
@@ -594,39 +1221,39 @@ msgstr "Mit dieser OpenID wurde bereits ein Konto registriert."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Der OpenID-Server konnte leider nicht gefunden werden"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Für %s konnte kein OpenID-Dienst gefunden werden"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Überprüfung von %s fehlgeschlagen: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Überprüfung abgebrochen"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Deine OpenID-URL wurde erfolgreich gespeichert."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "Du kannst deine OpenID-URL nicht löschen, solange kein Passwort gesetzt ist."
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Diese OpenID ist für dieses Konto nicht registriert."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID wurde erfolgreich entfernt."
@@ -643,13 +1270,6 @@ msgstr "Eine OpenID hinzufügen"
msgid "Delete an OpenID"
msgstr "Eine OpenID entfernen"
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Löschen"
-
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
msgid "OpenID's"
msgstr "OpenIDs"
@@ -657,7 +1277,7 @@ msgstr "OpenIDs"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -689,26 +1309,26 @@ msgstr "Oder registriere dich mit OpenID!"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Mit dieser Persona E-Mail wurde bereits ein Konto registriert."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Die Persone E-Mail-Adresse wurde erfolgreich entfernt."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "Du kannst deine Persona E-Mail-Adresse nicht löschen, solange kein Passwort gesetzt ist."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Diese Persona E-Mail-Adresse ist für dieses Konto nicht registriert."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "Mit dieser Persona E-Mail-Adresse wurde bereits ein Konto registriert."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Deine Persona E-Mail-Adresse wurde erfolgreich gespeichert."
@@ -732,15 +1352,15 @@ msgstr "Oder melde dich mit Persona an!"
msgid "Or register with Persona!"
msgstr "Oder registriere dich mit Persona!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "Kopieren auf öffentlichen Speicher ist fehlgeschlagen."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "Es wurde keine akzeptable Datei zum Verarbeiten gefunden"
@@ -759,15 +1379,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "Du kannst\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> zum Formatieren verwenden."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Du musst eine Datei angeben."
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "JAAA! Geschafft!"
-
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Sammlung \"%s\" hinzugefügt!"
@@ -790,30 +1406,26 @@ msgstr "Du wurdest gesperrt"
msgid "until %(until_when)s"
msgstr "bis %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "unbefristet"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Bitte bestätige Deine E-Mail-Adresse!"
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "Abmelden"
-#: mediagoblin/templates/mediagoblin/base.html:115
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "<a href=\"%(user_url)s\">%(user_name)s</a>s Konto"
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Kontoeinstellungen ändern"
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -821,32 +1433,32 @@ msgstr "Kontoeinstellungen ändern"
msgid "Media processing panel"
msgstr "Medienverarbeitung"
-#: mediagoblin/templates/mediagoblin/base.html:135
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Abmelden"
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Medien hinzufügen"
-#: mediagoblin/templates/mediagoblin/base.html:141
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Neue Sammlung erstellen"
-#: mediagoblin/templates/mediagoblin/base.html:151
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Moderatorenrechte:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Benutzerverwaltung"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Meldungsverwaltung"
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Neuste Medien"
-
#: mediagoblin/templates/mediagoblin/api/authorize.html:21
msgid "Authorization"
msgstr "Autorisierung"
@@ -897,8 +1509,9 @@ msgid "Authorization Complete"
msgstr "Autorisierung abgeschlossen"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Kopiere dies und füge es in deinem Client ein:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+"Kopiere diesen <strong>Verfizierungs-Schlüssel</strong> in deinen Client"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -943,38 +1556,38 @@ msgstr "Nutzungsbedingungen"
msgid "Explore"
msgstr "Entdecken"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hallo und willkommen auf dieser MediaGoblin-Seite!"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Diese Webseite läuft mit <a href=\"http://mediagoblin.org\">MediaGoblin</a>, einer großartigen Software, um deine Medien zu veröffentlichen."
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Melde dich mit deinem MediaGoblin-Konto an, um eigene Medien hinzuzufügen, zu kommentieren und mehr."
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
msgstr "Du hast noch keins? Dann registrier dich hier einfach."
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
msgid ""
"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >Erstelle ein Konto auf dieser Seite</a>\n oder"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n>Erstelle auf dieser Seite ein Benutzerkonto</a>\noder"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Installiere MediaGoblin auf deinem eigenen Server</a>"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Richte MediaGoblin auf Deinem eigenen Server ein</a>"
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -988,27 +1601,16 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Bearbeite Anhänge von %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Anhänge"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Anhang hinzufügen"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Abbrechen"
-
#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
@@ -1023,6 +1625,50 @@ msgstr "Änderungen speichern"
msgid "Changing %(username)s's email"
msgstr "Ändere %(username)ss E-Mail"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Entziehe den Anwendungen die Berechtigung"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Entziehe den Anwendungen die Berechtigung"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+" Diese Anwendungen können auf dein GNU MediaGoblin Konto "
+"zugreifen. Entfernen der \n"
+"Anwendung wird sie vom Zugriff auf dein Konto ausschließen. "
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Es sind keine Anwendungen autorisiert."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Typ:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Autorisiert:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "vor %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1032,12 +1678,6 @@ msgstr "Soll der Benutzer „%(user_name)s“ und all seine Medien sowie Komment
msgid "Yes, really delete my account"
msgstr "Ja, ich möchte mein Konto wirklich löschen"
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Endgültig löschen"
-
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -1054,7 +1694,7 @@ msgstr "%(username)ss Kontoeinstellungen ändern"
msgid "Delete my account"
msgstr "Mein Konto löschen"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "E-Mail"
@@ -1069,6 +1709,27 @@ msgstr "Bearbeite %(collection_title)s"
msgid "Editing %(username)s's profile"
msgstr "%(username)ss Profil bearbeiten"
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadaten für \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Metadaten"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Neue Zeile hinzufügen"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Metadaten aktualisieren"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Lösche leere Zeilen"
+
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
msgid ""
@@ -1087,17 +1748,6 @@ msgstr "Hi,\n\nwir möchten überprüfen, dass Du %(username)s bist.\nWenn dies
msgid "New comments"
msgstr "Neue Kommentare"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "vor %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Alles als gelesen markieren"
@@ -1110,38 +1760,41 @@ msgstr "Alles als gelesen markieren"
msgid "Media tagged with: %(tag_name)s"
msgstr "Medien mit Schlagwort: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Download"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Die Audiodatei kann nicht abgespielt werden, da dein Webbrowser kein HTML5 unterstützt."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr "Verzeihung, der Ton kann nicht abgespielt werden, denn\n\tihr Browser unterstützt keinen HTML 5 Ton"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Lad dir einen modernen Webbrowser runter, z.B. <a href=\"http://www.mozilla.org/de/firefox/new/\">Firefox</a> oder <a href=\"https://www.google.com/chrome/\">Chrome</a>. Die können die Audiodatei abspielen."
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Du kannst dir einen modernen Browser holen, der \n"
+"\t Audio wiedergeben kann <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Originaldatei"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM-Datei (Vorbis-Codec)"
@@ -1149,68 +1802,70 @@ msgstr "WebM-Datei (Vorbis-Codec)"
msgid "Created"
msgstr "Originaldatum"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Bild für %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF-Datei"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspektive"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Vorderseite"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Draufsicht"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Seitenansicht"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Modell herunterladen"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Dateiformat"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Objekthöhe"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Entschuldige, dieses Video wird nicht funktionieren, weil dein Webbrowser kein HTML5-Video unterstützt."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Hol dir auf <a href=\"http://getfirefox.com\">http://getfirefox.com</a> einen modernen Webbrowser, der dieses Video abspielen kann!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "WebM-Datei (VP8/Vorbis)"
@@ -1224,6 +1879,32 @@ msgstr "Hier siehst du den Status der Medien, die derzeit Konvertiert werden."
msgid "Media in-processing"
msgstr "Medien in Bearbeitung"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Nutzer"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Wann übermittelt"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Transkodierungsvorgang"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Unbekannt"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1234,6 +1915,14 @@ msgstr "Keine Medien in Bearbeitung"
msgid "These uploads failed to process:"
msgstr "Die folgenden Uploads sind fehlgeschlagen:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Grund für Fehlschlag"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Fehlschlag Metadaten"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1243,6 +1932,10 @@ msgstr "Keine fehlgeschlagenen Einträge!"
msgid "Last 10 successful uploads"
msgstr "Die letzten 10 erfolgreichen Uploads"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Eingereicht"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1252,20 +1945,20 @@ msgstr "Noch keine verarbeiteten Einträge!"
msgid "Sorry, no such report found."
msgstr "Keine Meldung gefunden."
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
msgid "Return to Reports Panel"
msgstr "Zurück zur Meldungsverwaltung"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Meldung"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
msgid "Reported comment"
msgstr "Gemeldeter Kommentar"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
#, python-format
msgid ""
"\n"
@@ -1273,7 +1966,7 @@ msgid ""
" "
msgstr "\n â– Gemeldete Medien von <a href=\"%(user_url)s\">%(user_name)s</a>\n "
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
#, python-format
msgid ""
"\n"
@@ -1283,24 +1976,29 @@ msgid ""
" "
msgstr "\n INHALT VON\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n WURDE GELÖSCHT\n "
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Grund für den Bericht:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
msgstr "Beheben"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
msgid "Resolve This Report"
msgstr "Diese Meldung beheben"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
msgid "Status"
msgstr "Status"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
msgstr "GELÖST"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
msgid "You cannot take action against an administrator"
msgstr "Du kannst keine Maßnahmen gegen einen Administrator ergreifen"
@@ -1321,7 +2019,7 @@ msgid "Active Reports Filed"
msgstr "Offene Meldungen"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
msgid "Offender"
msgstr "Täter"
@@ -1330,16 +2028,16 @@ msgid "When Reported"
msgstr "Wann Gemeldet "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
msgid "Reported By"
msgstr "Gemeldet von"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
msgid "Reason"
msgstr "Grund"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
#, python-format
msgid ""
"\n"
@@ -1347,7 +2045,7 @@ msgid ""
" "
msgstr "\n Kommentar-Meldung #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
#, python-format
msgid ""
"\n"
@@ -1355,23 +2053,23 @@ msgid ""
" "
msgstr "\n Medien-Meldung #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
msgid "No open reports found."
msgstr "Keine offenen Meldungen gefunden."
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
msgid "Closed Reports"
msgstr "Geschlossene Meldungen"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
msgid "Resolved"
msgstr "Gelöst"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
msgid "Action Taken"
msgstr "Eingeleitete Maßnahme"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
#, python-format
msgid ""
"\n"
@@ -1379,10 +2077,142 @@ msgid ""
" "
msgstr "\n Geschlossene Meldung #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
msgid "No closed reports found."
msgstr "Keine geschlossenen Meldungen gefunden."
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Nutzer: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Zurück zur Benutzerübersicht"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Entschuldigung, kein solcher Benutzer gefunden."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "E-Mail Aktivierung benötigt"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "Jemand hat bereits ein Konto mit diesem Benutzernamen registriert, \naber es muss noch aktiviert werden."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)ss Profil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "GESPERRT bis %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "Für immer gesperrt"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Dieser Benutzer hat sein Profil noch nicht ausgefüllt."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Profil bearbeiten"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Sammlungen durchstöbern"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Aktive Berichte von %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "Berichtskennung"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Gemeldeter Inhalt"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Beschreibung des Berichts"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Bericht #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Gemeldeter Kommentar"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Gemeldetes Medium"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "Keine aktiven Berichte für %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Alle Berichte von %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Alle Berichte von %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "%(username)s's Privilegien"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Privileg"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "gewährt"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Ja"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Nein"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Sperre Nutzer"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Lasse Nutzer wieder zu"
+
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
msgid "User panel"
@@ -1399,10 +2229,6 @@ msgstr "\n Hier kannst Du Benutzer nachschlagen, um Strafmaßnahmen gegen sie
msgid "Active Users"
msgstr "Aktive Benutzer"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "Wann Registriert"
@@ -1424,6 +2250,26 @@ msgstr "Eine Sammlung hinzufügen"
msgid "Add your media"
msgstr "Deine Medien"
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Blogpost von <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Einen Kommentar schreiben"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Kommentar hinzufügen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Hinzugefügt"
+
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
@@ -1434,23 +2280,27 @@ msgstr "%(collection_title)s (ein Album von %(username)s)"
msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s von <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Bearbeiten"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Lösche Album %(collection_title)s "
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Möchtest du %(title)s wirklich löschen?"
+msgid "Really delete collection: %(title)s?"
+msgstr "Album %(title)s wirklich löschen?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Entferne %(media_title)s aus %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
msgstr "Wirklich %(media_title)s aus %(collection_title)s entfernen?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
msgid "Remove"
msgstr "Entfernen"
@@ -1488,27 +2338,15 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a>s Medien mit dem Schlagwort <a
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>s Medien"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– Medien von <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Einen Kommentar schreiben"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Kommentar hinzufügen"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Kommentarvorschau"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Hinzugefügt"
-
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
@@ -1557,52 +2395,27 @@ msgstr "\n ■Veröffentlicht von <a href=\"%(user_url)s\"\n
msgid "File Report "
msgstr "Reiche Meldung ein"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "%(username)ss Profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
msgstr "Hier kannst Du Dich selbst beschreiben."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Profil bearbeiten"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Dieser Benutzer hat sein Profil noch nicht ausgefüllt."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Sammlungen durchstöbern"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
#, python-format
msgid "View all of %(username)s's media"
msgstr "Alle Medien von %(username)s anschauen"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Hier erscheinen deine Medien, sobald du etwas hochgeladen hast."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
msgstr "Es wurden noch keine Medien hinzugefügt."
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "E-Mail Aktivierung benötigt"
-
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
msgid "Almost done! Your account still needs to be activated."
msgstr "Fast fertig! Dein Konto muss noch freigeschaltet werden."
@@ -1645,6 +2458,14 @@ msgstr "In den Sammlungen"
msgid "Add to a collection"
msgstr "Zu einer Sammlung hinzufügen"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Komentare abonnieren"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Komentare stumm schalten"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -1681,6 +2502,10 @@ msgstr "neuer"
msgid "older"
msgstr "älter"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Aufnahmeort"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "Medien melden"
@@ -1693,34 +2518,34 @@ msgstr "Schlagwörter"
msgid "Could not read the image file."
msgstr "Das Bild konnte nicht verarbeitet werden."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Hoppla!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Ein Fehler ist aufgetreten"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
-msgstr "Ungültige Anfrage"
+msgstr "Falsche Anfrage"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "Die zum Server gesendete Anfrage ist ungültig, bitte überprüfe sie noch einmal"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Funktion nicht erlaubt"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "So nicht!</p><p>Du wolltest eine Funktion verwenden zu der Du nicht die nötigen Rechte besitzt. Wolltest Du etwa schon wieder alle Nutzerkonten löschen?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -1761,10 +2586,6 @@ msgid ""
"target=\"_blank\">Markdown</a> for formatting."
msgstr "Du kannst <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> zum Formatieren verwenden."
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Ja, wirklich löschen"
-
#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Ich bin sicher, dass ich dieses Objekt aus der Sammlung entfernen möchte"
@@ -1792,73 +2613,69 @@ msgstr "Du kannst\n<a href=\"http://daringfireball.net/projects/markdown/basics\
msgid "Reason for Reporting"
msgstr "Grund für die Meldung"
-#: mediagoblin/user_pages/views.py:178
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Kommentare sind leider deaktiviert."
-#: mediagoblin/user_pages/views.py:183
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Hoppla, der Kommentartext fehlte."
-#: mediagoblin/user_pages/views.py:189
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Dein Kommentar wurde angenommen!"
-#: mediagoblin/user_pages/views.py:225
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Bitte überprüfe deine Eingaben und versuche es erneut."
-#: mediagoblin/user_pages/views.py:265
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Du musst eine Sammlung auswählen oder hinzufügen"
-#: mediagoblin/user_pages/views.py:276
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" ist bereits in der Sammlung \"%s\""
-#: mediagoblin/user_pages/views.py:282
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" zur Sammlung \"%s\" hinzugefügt"
-#: mediagoblin/user_pages/views.py:307
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Du hast das Medium gelöscht."
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Das Medium wurde nicht gelöscht, da du die Löschung nicht bestätigt hast."
-
-#: mediagoblin/user_pages/views.py:326
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Du versuchst Medien eines anderen Nutzers zu löschen. Sei bitte vorsichtig."
-#: mediagoblin/user_pages/views.py:399
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Du hast das Objekt aus der Sammlung entfernt."
-#: mediagoblin/user_pages/views.py:403
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Das Objekt wurde nicht aus der Sammlung entfernt, weil du nicht bestätigt hast, dass du dir sicher bist."
-#: mediagoblin/user_pages/views.py:411
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Du bist dabei ein Objekt aus der Sammlung eines anderen Benutzers zu entfernen. Sei vorsichtig."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Du hast die Sammlung \"%s\" gelöscht"
-#: mediagoblin/user_pages/views.py:450
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "Die Sammlung wurde nicht gelöscht, weil du nicht bestätigt hast, dass du dir sicher bist."
-#: mediagoblin/user_pages/views.py:458
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Du bist dabei eine Sammlung eines anderen Benutzers zu entfernen. Sei vorsichtig."
diff --git a/mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/dz/mediagoblin.po
index 69f9aef2..d93ea081 100644
--- a/mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/dz/mediagoblin.po
@@ -1,32 +1,32 @@
# Translations template for PROJECT.
# Copyright (C) 2014 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
msgid ""
msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/mediagoblin/language/vi_VN/)\n"
+"POT-Creation-Date: 2014-09-21 11:08-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: dz\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
"Generated-By: Babel 1.3\n"
-"Language: vi_VN\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:303 mediagoblin/plugins/openid/views.py:202
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:318
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
+#: mediagoblin/decorators.py:361 mediagoblin/plugins/ldap/views.py:55
#: mediagoblin/plugins/persona/views.py:77
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
@@ -58,8 +58,8 @@ msgstr ""
#: mediagoblin/auth/views.py:161
msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
msgstr ""
#: mediagoblin/auth/views.py:167
@@ -81,7 +81,11 @@ msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -93,7 +97,8 @@ msgstr ""
#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -189,7 +194,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/tests/test_util.py:143
msgid "Password"
msgstr ""
@@ -330,7 +335,8 @@ msgstr ""
#: mediagoblin/gmg_commands/batchaddmedia.py:157
msgid ""
"Successfully submitted {filename}!\n"
-"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
"uploaded successfully."
msgstr ""
@@ -352,9 +358,9 @@ msgstr ""
#: mediagoblin/meddleware/csrf.py:134
msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
msgstr ""
#: mediagoblin/media_types/__init__.py:79
@@ -538,6 +544,57 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:34
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:47
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:51
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:53
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:62
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:71
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:78
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
#: mediagoblin/moderation/tools.py:91
msgid "Warning from"
msgstr ""
@@ -556,11 +613,11 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:241
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:246 mediagoblin/oauth/views.py:297
msgid "No request token found."
msgstr ""
@@ -610,12 +667,18 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
"\n"
-" Go to the page of the media entry you want to feature. Copy it's URL and\n"
-" then paste it into a new line in the text box above. There should be only\n"
-" one url per line. The url that you paste into the text box should be under\n"
-" the header describing how prominent a feature it will be (whether Primary,\n"
-" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
-" inside the text box, click the Submit Query button, and your media should be\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
" displayed on the front page.\n"
" "
msgstr ""
@@ -627,21 +690,33 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
"\n"
-" Yes. If you would prefer, you may go to the media homepage of the piece\n"
-" of media you would like to feature or unfeature and look at the bar to\n"
-" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
-" the media will be featured as a Primary Feature at the top of the page.\n"
-" All other featured media entries will remain as features, but will be\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
" pushed further down the page.<br /><br />\n"
"\n"
-" If you go to the media homepage of a piece of media that is currently\n"
-" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
-" where previously there was the button which said \"Feature\". Click\n"
-" Unfeature and that media entry will no longer be displayed on the\n"
-" front page, although you can feature it again at any point. Promote\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
" moves the featured media higher up on the page and makes it more\n"
-" prominent and Demote moves the featured media lower down and makes it\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
" less prominent.\n"
" "
msgstr ""
@@ -653,13 +728,19 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
"\n"
-" These categories just describe how prominent a feature will be on your\n"
-" front page. Primary Features are placed at the top of the front page and are\n"
-" much larger. Next are Secondary Features, which are slightly smaller.\n"
-" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
"\n"
-" Primary Features also can display longer descriptions than Secondary\n"
-" Features, and Secondary Features can display longer descriptions than\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
" Tertiary Features."
msgstr ""
@@ -672,12 +753,18 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
msgid ""
"\n"
-" When a media entry is featured, the entry's title, it's thumbnail and a\n"
-" portion of its description will be displayed on your website's front page.\n"
-" The number of characters displayed varies on the prominence of the feature.\n"
-" Primary Features display the first 512 characters of their description,\n"
-" Secondary Features display the first 256 characters of their description,\n"
-" and Tertiary Features display the first 128 characters of their description.\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
" "
msgstr ""
@@ -688,7 +775,8 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
"\n"
-" Unfeature a media by removing its line from the above textarea and then\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
" pressing the Submit Query button.\n"
" "
msgstr ""
@@ -700,9 +788,12 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
"\n"
-" When copying and pasting urls into the above text box, be aware that if\n"
-" you make a typo, once you press Submit Query, your media entry will NOT be\n"
-" featured. Make sure that all your intended Media Entries are featured.\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
" "
msgstr ""
@@ -758,24 +849,26 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
-" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
-" featuring media, a regular user would see a blank page, so be sure to\n"
-" have media featured as long as your instance has the 'archivalook'\n"
-" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -841,8 +934,8 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:65
@@ -850,14 +943,13 @@ msgid "Couldn't find someone with that username."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
+msgid "An email has been sent with instructions on how to change your password."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:75
msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:123
@@ -973,10 +1065,14 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
" JavaScript client)."
msgstr ""
@@ -1110,8 +1206,8 @@ msgstr ""
#: mediagoblin/plugins/persona/views.py:144
msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
+"You can't delete your only Persona email address unless you have a "
+"password set."
msgstr ""
#: mediagoblin/plugins/persona/views.py:149
@@ -1119,8 +1215,7 @@ msgid "That Persona email address is not registered to this account."
msgstr ""
#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
+msgid "Sorry, an account is already registered with that Persona email address."
msgstr ""
#: mediagoblin/plugins/persona/views.py:192
@@ -1170,7 +1265,8 @@ msgstr ""
#: mediagoblin/submit/forms.py:41
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -1201,10 +1297,6 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/base.html:97
msgid "Verify your email!"
msgstr ""
@@ -1246,6 +1338,10 @@ msgstr ""
msgid "Create new collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:163
+msgid "Moderation powers:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:169
msgid "User management panel"
msgstr ""
@@ -1331,15 +1427,16 @@ msgstr ""
#, python-format
msgid ""
"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
msgid ""
"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
@@ -1356,14 +1453,14 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
@@ -1380,7 +1477,9 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
@@ -1485,12 +1584,14 @@ msgstr ""
msgid ""
"Hi,\n"
"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
"please follow the link below to verify your new email address.\n"
"\n"
"%(verification_url)s\n"
"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
"this email."
msgstr ""
@@ -1630,8 +1731,7 @@ msgid "WebM file (VP8/Vorbis)"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
+msgid "Here you can track the state of media being processed on this instance."
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
@@ -1639,6 +1739,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1649,6 +1775,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1658,6 +1792,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1698,6 +1836,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1939,7 +2081,8 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
msgid ""
"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
" "
msgstr ""
@@ -1947,10 +2090,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -2040,7 +2179,8 @@ msgstr ""
#, python-format
msgid ""
"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
@@ -2084,8 +2224,7 @@ msgid "Add a new collection"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
+msgid "You can track the state of media being processed for your gallery here."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
@@ -2143,8 +2282,7 @@ msgid "Almost done! Your account still needs to be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
+msgid "An email should arrive in a few moments with instructions on how to do so."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
@@ -2157,15 +2295,15 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
+"Someone has registered an account with this username, but it still has to"
+" be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
msgstr ""
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
@@ -2180,6 +2318,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2228,38 +2374,38 @@ msgstr ""
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:39
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:40
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:54
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:56
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:64
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:65
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:73
msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
msgstr ""
#: mediagoblin/tools/timesince.py:62
@@ -2292,7 +2438,8 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:25
msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
"target=\"_blank\">Markdown</a> for formatting."
msgstr ""
@@ -2315,7 +2462,9 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -2371,8 +2520,8 @@ msgstr ""
#: mediagoblin/user_pages/views.py:421
msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
msgstr ""
#: mediagoblin/user_pages/views.py:453
@@ -2382,10 +2531,10 @@ msgstr ""
#: mediagoblin/user_pages/views.py:460
msgid ""
-"The collection was not deleted because you didn't check that you were sure."
+"The collection was not deleted because you didn't check that you were "
+"sure."
msgstr ""
#: mediagoblin/user_pages/views.py:468
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
+msgid "You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 87bed6dc..00000000
--- a/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 323b839e..00000000
--- a/mediagoblin/i18n/el/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1847 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Townnr <da81adfc@opayq.com>, 2014
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-03-09 00:28+0000\n"
-"Last-Translator: Townnr <da81adfc@opayq.com>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/mediagoblin/language/el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Συγγνώμη, η εγγÏαφή έχει απαγοÏευτεί σ' αυτό το instance (ÏŒ,τι κι αν σημαίνει αυτό εν Ï€Ïοκειμένω)"
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Συγγνώμη, υπάÏχει ήδη χÏήστης/χÏήστÏια μ' αυτό το όνομα."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Συγγνώμη, ένας χÏήστης μ' αυτήν τη διεÏθυνση υπάÏχει ήδη."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr ""
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Η διεÏθυνσή σας έχει επιβεβαιωθεί. ΜποÏείτε τώÏα να εισέλθετε, να επεξεÏγαστείτε το Ï€Ïοφίλ σας, και να υποβάλλετε εικόνες!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "Το κλειδί επιβεβαίωσης ή η ταυτότητα χÏήστη είναι εσφαλμένα."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "ΠÏέπει να έχετε εισέλθει ώστε να ξέÏουμε σε ποιον να στείλουμε την ηλ. επιστολή!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Έχετε ήδη επιβεβαιώσει τη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Η ηλεκτÏονική επιστολή επιβεβαίωσης επανεστάλη."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Τίτλος"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "ΠεÏιγÏαφή Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… έÏγου"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "ΜποÏείτε να χÏησιμοποιήσετε\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nτο Markdown</a> για μοÏφοποίηση."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Ετικέτες"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "ΔιαχωÏίστε τις ετικέτες με κόμματα."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "ΑÏάδα"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "Η αÏάδα δεν μποÏεί να είναι κενή"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "Το τμήμα τίτλου της διεÏθυνσης Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… πολυμέσου. Συνήθως δε χÏειάζεται να το αλλάξετε."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Άδεια"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "ΒιογÏαφικό"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Ιστοσελίδα"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Αυτή η διεÏθυνση πεÏιέχει σφάλματα"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Αποστείλετε ηλ. επιστολή όταν άλλοι σχολιάσουν τα πολυμέσα μου"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "Ο τίτλος δεν μποÏεί να είναι κενός."
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "ΠεÏιγÏαφή αυτής της συλλογής"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "Το τμήμα τίτλου της διεÏθυνσης αυτής της συλλογής. Αυτό συνήθως δε χÏειάζεται να το αλλάξετε."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Παλιός κωδικός"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Εισαγάγετε τον παλιό σας κωδικό για ν' αποδείξετε πως σας ανήκει αυτός ο λογαÏιασμός."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Îέος κωδικός"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Κωδικός"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr ""
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "ΥπάÏχει ήδη λήμμα μ' αυτήν την αÏάδα γι' αυτόν το χÏήστη/αυτήν τη χÏήστÏια."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "ΕπεξεÏγάζεστε τα πολυμέσα ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr ""
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr ""
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "ΕπεξεÏγάζεστε το Ï€Ïοφίλ ενός χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Αλλαγές Ï€Ïοφίλ αποθηκεÏτηκαν."
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Αλλαγές λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î±Ï€Î¿Î¸Î·ÎºÎµÏτηκαν."
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr ""
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr ""
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "Μια συλλογή μ' αυτήν την αÏάδα υπάÏχει ήδη γι' αυτόν το χÏήστη."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "ΕπεξεÏγάζεστε τη συλλογή ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr ""
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Îέος κωδικός"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr ""
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Συγγνώμη, δεν υποστηÏίζω αυτόν τον Ï„Ïπο αÏχείου :-("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr ""
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Η μετακωδικοποίηση του βίντεο απέτυχε."
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr ""
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr ""
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "σχολίασε στην ανάÏτησή σας"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr ""
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Όνομα ΧÏήστη"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Όνομα χÏήστη ή διεÏθυνση ηλ. ταχ."
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Σας έχει αποσταλεί μια ηλεκτÏονική επιστολή με οδηγίες για το πώς ν' αλλάξετε τον κωδικό σας."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Δεν μποÏέσαμε ν' αποστείλουμε ηλ. επιστολή ανάκτησης κωδικοÏ, καθώς το όνομα χÏήστη σας είναι ανενεÏγό ή η διεÏθυνση ηλ. ταχυδÏομείου του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ δεν έχει επιβεβαιωθεί."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "ΤώÏα μποÏείτε να εισέλθετε με τον καινοÏÏιο σας κωδικό."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "ΟÏισμός νέου κωδικοÏ"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "ΟÏισμός κωδικοÏ"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Δεν έχετε ακόμα λογαÏιασμό;"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "ΔημιουÏγήστε έναν εδώ!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Επανάκτηση κωδικοÏ"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Αποστολή οδηγιών"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Ξεχάσατε τον κωδικό σας;"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Τοποθεσία"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Δείτε το στο <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "ΕπίτÏεψε"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "ΑÏνήσου"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Όνομα"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "ΠεÏιγÏαφή"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "ΤÏπος"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "ΠÏοσθήκη"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr ""
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "ΔιαγÏαφή"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Είσοδος"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Είσοδος απέτυχε!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Εσφαλμένο αÏχείο για το δεδομένο Ï„Ïπο πολυμέσων."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "ΑÏχείο"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "ΠÏέπει να παÏάσχετε ένα αÏχείο."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "ΓιοÏπι! ΠαÏασχέθηκε!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Επιβεβαιώστε τη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Αλλαγή Ïυθμίσεων λογαÏιασμοÏ"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Πλαίσιο επεξεÏγασίας πολυμέσων"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "ΠÏοσθήκη πολυμέσων"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Πιο Ï€Ïόσφατα πολυμέσα"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "ΔημιουÏγήστε λογαÏιασμό!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "ΔημιουÏγία"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "ΧαίÏετε %(username)s,\n\nΓια να ενεÏγοποιήσετε το λογαÏιασμό σας στο GNU MediaGoblin, ανοίξτε την παÏακάτω διεÏθυνση στον πεÏιηγητή σας:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "ΕξεÏεÏνηση"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Î Î¿Î»Ï ÎºÎ±Î»Î·Î¼Î­Ïα, καλωσοÏίσατε στη σελίδα του MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Αυτή η σελίδα Ï„Ïέχει το<a href=\"http://mediagoblin.org\">MediaGoblin</a> , ένα εξαίÏετα υπέÏοχο τεμάχιο Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï Ï†Î¹Î»Î¿Î¾ÎµÎ½Î¯Î±Ï‚ πολυμέσων."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Για να Ï€Ïοσθέσετε τα πολυμέσα σας, να εισαγάγετε σχόλια και άλλα, μποÏείτε να εισέλθετε με τον κωδικό σας για το MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "Δεν έχετε ακόμα; Είναι εÏκολο!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Λογότυπο MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Συνημμένα"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "ΠÏοσθήκη συνημμένου"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "ΑκÏÏωση"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Αποθήκευση αλλαγών"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Μόνιμη διαγÏαφή"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "ΕπεξεÏγασία του %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Αλλαγή Ïυθμίσεων λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï„Î¿Ï… χÏήστη %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "ΕπεξεÏγασία του Ï€Ïοφίλ του %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Πολυμέσα επιγεγÏαμμένα με: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "ΚαταφόÏτωση"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Αυθεντικό"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Συγγνώμη, αυτό το αÏχείο ήχου δε θα δουλέψει επειδή\n⇥ο πεÏιηγητής σας δεν υποστηÏίζει HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "ΜποÏείτε να βÏείτε έναν σÏγχÏονο πεÏιηγητή\n⇥που να μποÏεί να το αναπαÏαγάγει\n⇥στο <a href=\"http://getfirefox.com\">http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Αυθεντικό αÏχείο"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Εικόνα για %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Πολυμέσα εν μέσω επεξεÏγασίας"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Δεν υπάÏχουν πολυμέσα εν μέσω επεξεÏγασίας"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Αυτές οι αναφοÏτώσεις δεν επεξεÏγάστηκαν επιτυχώς:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Μηδέν αποτυχημένες εισαγωγές!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Τελευταίες 10 επιτυχημένες αναφοÏτώσεις"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Δεν υπάÏχουν ακόμα επεξεÏγασμένες εισαγωγές!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "ΠÏοσθήκη συλλογής"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "ΠÏοσθήκη πολυμέσων σας"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "ΕπεξεÏγασία"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Θέλετε Ï€Ïαγματικά να διαγÏάψετε το %(title)s;"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "ΑφαίÏεση"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Τα πολυμέσα του/της %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Τα πολυμέσα του/της <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "ΠÏοσθήκη σχολίου"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "ΠÏοσθήκη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… σχολίου"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "ΠÏοσθήκη νέας συλλογής"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Από εδώ μποÏείτε να ιχνηλατήσετε την κατάσταση των πολυμέσων που επεξεÏγάζονται για την πινακοθήκη σας."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Οι τελευταίες 10 επιτυχημένες αναφοÏτώσεις σας"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Το Ï€Ïοφίλ του %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Î™Î´Î¿Ï Î­Î½Î± σημείο για να πείτε στους άλλους για τον εαυτό σας."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "ΕπεξεÏγασία Ï€Ïοφίλ"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Αυτός ο χÏήστης δεν έχει συμπληÏώσει το Ï€Ïοφίλ του (ακόμα)."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "ΠÏοβολή όλων των πολυμέσων του/της %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Εδώ θα εμφανίζονται τα πολυμέσα σας, αν και δε φαίνεται να 'χετε Ï€Ïοσθέσει ακόμα κάτι."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Δε φαίνεται να υπάÏχουν ακόμα εδώ πολυμέσα..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Επιβεβαίωση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου απαÏαίτητη"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Σχεδόν τελειώσαμε! Ο λογαÏιασμός σας Ï€Ïέπει επιπλέον να ενεÏγοποιηθεί."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Λογικά θα λάβετε σε λίγο μια ηλεκτÏονική επιστολή με οδηγίες για το πώς να το κάνετε αυτό."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Σε πεÏίπτωση που δεν τη λάβετε:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Επαναποστολή επιστολής επιβεβαίωσης"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Κάποιος έχει ήδη δηλώσει ένα λογαÏιασμό μ' αυτό το όνομα χÏήστη, αλλά δεν έχει ενεÏγοποιηθεί ακόμα."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Αν είστε αυτό το άτομο αλλά έχετε απωλέσει την επιστολή επιβεβαίωσης, μποÏείτε να <a href=\"%(login_url)s\">εισέλθετε</a> και να την επαναποστείλετε."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "εικονίδιο εισÏοής"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "εισÏοή Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Επιφυλάσσονται άπαντα τα δικαιώματα"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "ÎεώτεÏα"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "ΠαλιότεÏα"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "ΠÏος σελίδα:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "νεώτεÏα"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "παλιότεÏα"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "ΕπιγεγÏαμμένο με"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Το αÏχείο εικόνας δεν μπόÏεσε ν' αναγνωστεί."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Ουπς!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr ""
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr ""
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr ""
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr ""
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr ""
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Είμαι σίγουÏος/η ότι θέλω να το διαγÏάψω"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Επιλογή --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "ΣÏναψη σημείωσης"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Ουπς, το σχόλιό σας ήταν κενό."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Το σχόλιό σας αναÏτήθηκε!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Έχετε διαγÏάψει αυτά τα πολυμέσα."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Τα πολυμέσα δε διεγÏάφησαν διότι δεν επιβεβαιώσατε την ανάλογη επιλογή."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "ΠÏόκειται να διαγÏάψετε τα πολυμέσα ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/el/mediagoblin.po
index c761055d..a0dffcae 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/el/mediagoblin.po
@@ -1,265 +1,381 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Jure Repinc <jlp@holodeck1.com>, 2011
+# Townnr <da81adfc@opayq.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/mediagoblin/language/sl/)\n"
+"Language-Team: Greek (http://www.transifex.com/projects/p/mediagoblin/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
-msgstr "Oprostite, prijava za ta izvod ni omogoÄena."
+msgstr "Συγγνώμη, η εγγÏαφή έχει απαγοÏευτεί σ' αυτό το instance (ÏŒ,τι κι αν σημαίνει αυτό εν Ï€Ïοκειμένω)"
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
-msgstr "Oprostite, uporabnik s tem imenom že obstaja."
+msgstr "Συγγνώμη, υπάÏχει ήδη χÏήστης/χÏήστÏια μ' αυτό το όνομα."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
-msgstr ""
+msgstr "Συγγνώμη, ένας χÏήστης μ' αυτήν τη διεÏθυνση υπάÏχει ήδη."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
-msgstr "Vaš e-poštni naslov je bil potrjen. Sedaj se lahko prijavite, uredite svoj profil in pošljete slike."
+msgstr "Η διεÏθυνσή σας έχει επιβεβαιωθεί. ΜποÏείτε τώÏα να εισέλθετε, να επεξεÏγαστείτε το Ï€Ïοφίλ σας, και να υποβάλλετε εικόνες!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
-msgstr "Potrditveni kljuÄ ali uporabniÅ¡ka identifikacija je napaÄna"
+msgstr "Το κλειδί επιβεβαίωσης ή η ταυτότητα χÏήστη είναι εσφαλμένα."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
-msgstr ""
+msgstr "ΠÏέπει να έχετε εισέλθει ώστε να ξέÏουμε σε ποιον να στείλουμε την ηλ. επιστολή!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
-msgstr ""
+msgstr "Έχετε ήδη επιβεβαιώσει τη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
-msgstr "Ponovno pošiljanje potrditvene e-pošte."
+msgstr "Η ηλεκτÏονική επιστολή επιβεβαίωσης επανεστάλη."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
-msgstr "Naslov"
+msgstr "Τίτλος"
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
msgid "Description of this work"
-msgstr ""
+msgstr "ΠεÏιγÏαφή Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… έÏγου"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr ""
+msgstr "ΜποÏείτε να χÏησιμοποιήσετε\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nτο Markdown</a> για μοÏφοποίηση."
#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
#: mediagoblin/submit/forms.py:45
msgid "Tags"
-msgstr "Oznake"
+msgstr "Ετικέτες"
#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
-msgstr ""
+msgstr "ΔιαχωÏίστε τις ετικέτες με κόμματα."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
-msgstr "Oznaka"
+msgstr "ΑÏάδα"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
-msgstr "Oznaka ne sme biti prazna"
+msgstr "Η αÏάδα δεν μποÏεί να είναι κενή"
#: mediagoblin/edit/forms.py:44
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr ""
+msgstr "Το τμήμα τίτλου της διεÏθυνσης Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… πολυμέσου. Συνήθως δε χÏειάζεται να το αλλάξετε."
#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Άδεια"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
-msgstr "Biografija"
+msgstr "ΒιογÏαφικό"
#: mediagoblin/edit/forms.py:60
msgid "Website"
-msgstr "Spletna stran"
+msgstr "Ιστοσελίδα"
#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
+msgstr "Αυτή η διεÏθυνση πεÏιέχει σφάλματα"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
-msgstr ""
+msgstr "Αποστείλετε ηλ. επιστολή όταν άλλοι σχολιάσουν τα πολυμέσα μου"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
-msgstr ""
+msgstr "Ο τίτλος δεν μποÏεί να είναι κενός."
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
-msgstr ""
+msgstr "ΠεÏιγÏαφή αυτής της συλλογής"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+msgstr "Το τμήμα τίτλου της διεÏθυνσης αυτής της συλλογής. Αυτό συνήθως δε χÏειάζεται να το αλλάξετε."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
-msgstr ""
+msgstr "Παλιός κωδικός"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Εισαγάγετε τον παλιό σας κωδικό για ν' αποδείξετε πως σας ανήκει αυτός ο λογαÏιασμός."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
-msgstr ""
+msgstr "Îέος κωδικός"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
-msgstr "Geslo"
+msgstr "Κωδικός"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
-msgstr "Vnos s to oznako za tega uporabnika že obstaja."
+msgstr "ΥπάÏχει ήδη λήμμα μ' αυτήν την αÏάδα γι' αυτόν το χÏήστη/αυτήν τη χÏήστÏια."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
-msgstr "Urejate vsebino drugega uporabnika. Nadaljujte pazljivo."
+msgstr "ΕπεξεÏγάζεστε τα πολυμέσα ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Urejate uporabniški profil. Nadaljujte pazljivo."
+msgstr "ΕπεξεÏγάζεστε το Ï€Ïοφίλ ενός χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
-msgstr ""
+msgstr "Αλλαγές Ï€Ïοφίλ αποθηκεÏτηκαν."
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
+msgstr "Αλλαγές λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î±Ï€Î¿Î¸Î·ÎºÎµÏτηκαν."
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
msgstr ""
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Μια συλλογή μ' αυτήν την αÏάδα υπάÏχει ήδη γι' αυτόν το χÏήστη."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "ΕπεξεÏγάζεστε τη συλλογή ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
-msgstr ""
+msgstr "Îέος κωδικός"
#: mediagoblin/gmg_commands/assetlink.py:60
msgid "Cannot link theme... no theme set\n"
@@ -288,7 +404,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -296,58 +412,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -361,40 +477,40 @@ msgstr ""
#: mediagoblin/media_types/__init__.py:79
#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
-msgstr ""
+msgstr "Συγγνώμη, δεν υποστηÏίζω αυτόν τον Ï„Ïπο αÏχείου :-("
#: mediagoblin/media_types/blog/forms.py:26
#: mediagoblin/media_types/blog/forms.py:35
#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "ΠεÏιγÏαφή"
#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
-msgstr ""
+msgstr "Είμαι σίγουÏος/η ότι θέλω να το διαγÏάψω"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
-msgstr "Juhej! Poslano."
+msgstr "ΓιοÏπι! ΠαÏασχέθηκε!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Τα πολυμέσα δε διεγÏάφησαν διότι δεν επιβεβαιώσατε την ανάλογη επιλογή."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -414,9 +530,9 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
-msgstr ""
+msgstr "ΕπεξεÏγασία"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
@@ -424,9 +540,9 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
-msgstr ""
+msgstr "ΔιαγÏαφή"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
@@ -440,7 +556,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
-msgstr ""
+msgstr "Θέλετε Ï€Ïαγματικά να διαγÏάψετε το %(title)s;"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
@@ -452,14 +568,14 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
-msgstr "PrekliÄi"
+msgstr "ΑκÏÏωση"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Delete permanently"
-msgstr ""
+msgstr "Μόνιμη διαγÏαφή"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
@@ -472,7 +588,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/submit/start.html:39
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
msgid "Add"
-msgstr ""
+msgstr "ΠÏοσθήκη"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
@@ -505,7 +621,7 @@ msgstr ""
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
-msgstr ""
+msgstr "Η μετακωδικοποίηση του βίντεο απέτυχε."
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
@@ -539,13 +655,64 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
-msgstr ""
+msgstr "σχολίασε στην ανάÏτησή σας"
#: mediagoblin/notifications/views.py:35
#, python-format
@@ -557,26 +724,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -631,7 +798,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -750,7 +917,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
#: mediagoblin/templates/mediagoblin/root.html:32
msgid "Most recent media"
-msgstr ""
+msgstr "Πιο Ï€Ïόσφατα πολυμέσα"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
@@ -760,23 +927,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -819,14 +983,14 @@ msgstr ""
#: mediagoblin/plugins/persona/forms.py:24
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
msgid "Username"
-msgstr "Uporabniško ime"
+msgstr "Όνομα ΧÏήστη"
#: mediagoblin/plugins/basic_auth/forms.py:32
#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
#: mediagoblin/plugins/persona/forms.py:28
#: mediagoblin/plugins/persona/forms.py:39
msgid "Email address"
-msgstr "E-poštni naslov"
+msgstr "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου"
#: mediagoblin/plugins/basic_auth/forms.py:39
msgid "Username or Email"
@@ -838,7 +1002,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/forms.py:51
msgid "Username or email"
-msgstr ""
+msgstr "Όνομα χÏήστη ή διεÏθυνση ηλ. ταχ."
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
@@ -853,13 +1017,13 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:68
msgid ""
"An email has been sent with instructions on how to change your password."
-msgstr ""
+msgstr "Σας έχει αποσταλεί μια ηλεκτÏονική επιστολή με οδηγίες για το πώς ν' αλλάξετε τον κωδικό σας."
#: mediagoblin/plugins/basic_auth/views.py:75
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr ""
+msgstr "Δεν μποÏέσαμε ν' αποστείλουμε ηλ. επιστολή ανάκτησης κωδικοÏ, καθώς το όνομα χÏήστη σας είναι ανενεÏγό ή η διεÏθυνση ηλ. ταχυδÏομείου του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ δεν έχει επιβεβαιωθεί."
#: mediagoblin/plugins/basic_auth/views.py:123
msgid "The user id is incorrect."
@@ -867,7 +1031,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:139
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "ΤώÏα μποÏείτε να εισέλθετε με τον καινοÏÏιο σας κωδικό."
#: mediagoblin/plugins/basic_auth/views.py:163
msgid ""
@@ -882,11 +1046,11 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "ΟÏισμός νέου κωδικοÏ"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "ΟÏισμός κωδικοÏ"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
@@ -901,11 +1065,11 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
msgid "Don't have an account yet?"
-msgstr "Å e nimate raÄuna?"
+msgstr "Δεν έχετε ακόμα λογαÏιασμό;"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
msgid "Create one here!"
-msgstr "Ustvarite si ga."
+msgstr "ΔημιουÏγήστε έναν εδώ!"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
msgid "Change your password."
@@ -914,24 +1078,20 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
msgid "Recover password"
-msgstr ""
+msgstr "Επανάκτηση κωδικοÏ"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
msgid "Send instructions"
-msgstr ""
+msgstr "Αποστολή οδηγιών"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
msgid "Forgot your password?"
-msgstr ""
+msgstr "Ξεχάσατε τον κωδικό σας;"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
+msgstr "Δείτε το στο <a href=\"%(osm_url)s\">OpenStreetMap</a>"
#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
msgid "Sign in to create an account!"
@@ -947,15 +1107,15 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
-msgstr ""
+msgstr "ΕπίτÏεψε"
#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
-msgstr ""
+msgstr "ΑÏνήσου"
#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "Όνομα"
#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
@@ -969,7 +1129,7 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "ΤÏπος"
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
@@ -995,7 +1155,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1008,8 +1168,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1017,39 +1177,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1073,17 +1233,17 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
msgid "Log in"
-msgstr "Prijava"
+msgstr "Είσοδος"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
#: mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
-msgstr "Prijava ni uspela."
+msgstr "Είσοδος απέτυχε!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
msgid "Log in to create an account!"
@@ -1105,26 +1265,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1148,15 +1308,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
-msgstr "Za vrsto vsebine je bila podana napaÄna datoteka."
+msgstr "Εσφαλμένο αÏχείο για το δεδομένο Ï„Ïπο πολυμέσων."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1166,7 +1326,7 @@ msgstr ""
#: mediagoblin/submit/forms.py:34
msgid "File"
-msgstr "Datoteka"
+msgstr "ΑÏχείο"
#: mediagoblin/submit/forms.py:41
msgid ""
@@ -1175,11 +1335,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
-msgstr "Podati morate datoteko."
+msgstr "ΠÏέπει να παÏάσχετε ένα αÏχείο."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1202,56 +1362,56 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
-msgstr ""
+msgstr "Επιβεβαιώστε τη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
-msgstr ""
+msgstr "Αλλαγή Ïυθμίσεων λογαÏιασμοÏ"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
msgid "Media processing panel"
-msgstr "Podokno obdelovanja vsebine"
+msgstr "Πλαίσιο επεξεÏγασίας πολυμέσων"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
-msgstr "Dodaj vsebino"
+msgstr "ΠÏοσθήκη πολυμέσων"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1305,17 +1465,17 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "Ustvarite raÄun."
+msgstr "ΔημιουÏγήστε λογαÏιασμό!"
#: mediagoblin/templates/mediagoblin/auth/register.html:41
msgid "Create"
-msgstr "Ustvari"
+msgstr "ΔημιουÏγία"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -1326,7 +1486,7 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "Pozdravljeni, %(username)s\n\nZa aktivacijo svojega raÄuna GNU MediaGoblin odprite\nnaslednji URL v svojem spletnem brskalniku:\n\n%(verification_url)s"
+msgstr "ΧαίÏετε %(username)s,\n\nΓια να ενεÏγοποιήσετε το λογαÏιασμό σας στο GNU MediaGoblin, ανοίξτε την παÏακάτω διεÏθυνση στον πεÏιηγητή σας:\n\n%(verification_url)s"
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
#, python-format
@@ -1349,27 +1509,27 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
msgid "Explore"
-msgstr ""
+msgstr "ΕξεÏεÏνηση"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr ""
+msgstr "Î Î¿Î»Ï ÎºÎ±Î»Î·Î¼Î­Ïα, καλωσοÏίσατε στη σελίδα του MediaGoblin!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
-msgstr ""
+msgstr "Αυτή η σελίδα Ï„Ïέχει το<a href=\"http://mediagoblin.org\">MediaGoblin</a> , ένα εξαίÏετα υπέÏοχο τεμάχιο Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï Ï†Î¹Î»Î¿Î¾ÎµÎ½Î¯Î±Ï‚ πολυμέσων."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
-msgstr ""
+msgstr "Για να Ï€Ïοσθέσετε τα πολυμέσα σας, να εισαγάγετε σχόλια και άλλα, μποÏείτε να εισέλθετε με τον κωδικό σας για το MediaGoblin."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
-msgstr ""
+msgstr "Δεν έχετε ακόμα; Είναι εÏκολο!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
msgid ""
@@ -1387,7 +1547,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
msgid "MediaGoblin logo"
-msgstr "Logotip MediaGoblin"
+msgstr "Λογότυπο MediaGoblin"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
@@ -1396,15 +1556,15 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
-msgstr ""
+msgstr "Συνημμένα"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
-msgstr ""
+msgstr "ΠÏοσθήκη συνημμένου"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
@@ -1412,7 +1572,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
-msgstr "Shrani spremembe"
+msgstr "Αποθήκευση αλλαγών"
#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
@@ -1420,6 +1580,47 @@ msgstr "Shrani spremembe"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1433,19 +1634,19 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
msgid "Editing %(media_title)s"
-msgstr "Urejanje %(media_title)s"
+msgstr "ΕπεξεÏγασία του %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
-msgstr ""
+msgstr "Αλλαγή Ïυθμίσεων λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï„Î¿Ï… χÏήστη %(username)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1458,7 +1659,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "Urejanje profila – %(username)s"
+msgstr "ΕπεξεÏγασία του Ï€Ïοφίλ του %(username)s"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
@@ -1499,19 +1700,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1522,40 +1710,40 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr ""
+msgstr "Πολυμέσα επιγεγÏαμμένα με: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
-msgstr ""
+msgstr "ΚαταφόÏτωση"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
-msgstr ""
+msgstr "Αυθεντικό"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
-msgstr ""
+msgstr "Αυθεντικό αÏχείο"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1563,70 +1751,70 @@ msgstr ""
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
-msgstr ""
+msgstr "Εικόνα για %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1638,31 +1826,69 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
msgid "Media in-processing"
-msgstr "Vsebina v obdelavi"
+msgstr "Πολυμέσα εν μέσω επεξεÏγασίας"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
-msgstr "V obdelavi ni nobene vsebine"
+msgstr "Δεν υπάÏχουν πολυμέσα εν μέσω επεξεÏγασίας"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
msgid "These uploads failed to process:"
-msgstr "Teh vsebin ni bilo moÄ obdelati:"
+msgstr "Αυτές οι αναφοÏτώσεις δεν επεξεÏγάστηκαν επιτυχώς:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Μηδέν αποτυχημένες εισαγωγές!"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
msgid "Last 10 successful uploads"
+msgstr "Τελευταίες 10 επιτυχημένες αναφοÏτώσεις"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Δεν υπάÏχουν ακόμα επεξεÏγασμένες εισαγωγές!"
#: mediagoblin/templates/mediagoblin/moderation/report.html:27
msgid "Sorry, no such report found."
@@ -1673,7 +1899,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1699,6 +1925,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1817,7 +2047,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
msgid "Email verification needed"
-msgstr "Potrebna je potrditev prek e-pošte"
+msgstr "Επιβεβαίωση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου απαÏαίτητη"
#: mediagoblin/templates/mediagoblin/moderation/user.html:55
msgid ""
@@ -1831,7 +2061,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
#, python-format
msgid "%(username)s's profile"
-msgstr "Profil – %(username)s"
+msgstr "Το Ï€Ïοφίλ του %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
@@ -1845,13 +2075,13 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:78
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "This user hasn't filled in their profile (yet)."
-msgstr "Ta uporabnik še ni izpolnil svojega profila."
+msgstr "Αυτός ο χÏήστης δεν έχει συμπληÏώσει το Ï€Ïοφίλ του (ακόμα)."
#: mediagoblin/templates/mediagoblin/moderation/user.html:89
#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
msgid "Edit profile"
-msgstr "Uredi profil"
+msgstr "ΕπεξεÏγασία Ï€Ïοφίλ"
#: mediagoblin/templates/mediagoblin/moderation/user.html:96
#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
@@ -1948,10 +2178,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1966,12 +2192,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
-msgstr ""
+msgstr "ΠÏοσθήκη συλλογής"
#: mediagoblin/templates/mediagoblin/submit/start.html:28
#: mediagoblin/templates/mediagoblin/submit/start.html:35
msgid "Add your media"
-msgstr ""
+msgstr "ΠÏοσθήκη πολυμέσων σας"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
@@ -1979,17 +2205,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
-msgstr ""
+msgstr "ΠÏοσθήκη σχολίου"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
-msgstr ""
+msgstr "ΠÏοσθήκη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… σχολίου"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2025,7 +2251,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
msgid "Remove"
-msgstr ""
+msgstr "ΑφαίÏεση"
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
#, python-format
@@ -2047,7 +2273,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
-msgstr ""
+msgstr "Τα πολυμέσα του/της %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
#, python-format
@@ -2059,14 +2285,14 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Vsebina uporabnika <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "Τα πολυμέσα του/της <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2082,16 +2308,16 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "ΠÏοσθήκη νέας συλλογής"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr "Tu lahko spremljate stanje vsebin, ki so v obdelavi za vašo galerijo."
+msgstr "Από εδώ μποÏείτε να ιχνηλατήσετε την κατάσταση των πολυμέσων που επεξεÏγάζονται για την πινακοθήκη σας."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Οι τελευταίες 10 επιτυχημένες αναφοÏτώσεις σας"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
msgid "<h2>File a Report</h2>"
@@ -2120,54 +2346,54 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
-msgstr "Na tem mestu lahko drugim poveste nekaj o sebi."
+msgstr "Î™Î´Î¿Ï Î­Î½Î± σημείο για να πείτε στους άλλους για τον εαυτό σας."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Prikaži vso vsebino uporabnika %(username)s"
+msgstr "ΠÏοβολή όλων των πολυμέσων του/της %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
-msgstr "Tu bo prikazana vaÅ¡a vsebina, a trenutno Å¡e niste dodali niÄ."
+msgstr "Εδώ θα εμφανίζονται τα πολυμέσα σας, αν και δε φαίνεται να 'χετε Ï€Ïοσθέσει ακόμα κάτι."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
-msgstr "Videti je, da tu še ni nobene vsebine ..."
+msgstr "Δε φαίνεται να υπάÏχουν ακόμα εδώ πολυμέσα..."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
msgid "Almost done! Your account still needs to be activated."
-msgstr "Skoraj ste zakljuÄili. Svoj raÄun morate le Å¡e aktivirati."
+msgstr "Σχεδόν τελειώσαμε! Ο λογαÏιασμός σας Ï€Ïέπει επιπλέον να ενεÏγοποιηθεί."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
-msgstr "V kratkem bi morali prejeti e-pošto z navodili, kako to storiti."
+msgstr "Λογικά θα λάβετε σε λίγο μια ηλεκτÏονική επιστολή με οδηγίες για το πώς να το κάνετε αυτό."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
msgid "In case it doesn't:"
-msgstr "ÄŒe je ne prejmete:"
+msgstr "Σε πεÏίπτωση που δεν τη λάβετε:"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
msgid "Resend verification email"
-msgstr "Ponovno pošlji potrditveno e-pošto"
+msgstr "Επαναποστολή επιστολής επιβεβαίωσης"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
-msgstr "Nekdo je s tem uporabniÅ¡kim imenom že registriral raÄun, vendar mora biti Å¡e aktiviran."
+msgstr "Κάποιος έχει ήδη δηλώσει ένα λογαÏιασμό μ' αυτό το όνομα χÏήστη, αλλά δεν έχει ενεÏγοποιηθεί ακόμα."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Če ste ta oseba vi, a ste izgubili potrditveno e-pošto, se lahko <a href=\"%(login_url)s\">prijavite</a> in jo ponovno pošljete."
+msgstr "Αν είστε αυτό το άτομο αλλά έχετε απωλέσει την επιστολή επιβεβαίωσης, μποÏείτε να <a href=\"%(login_url)s\">εισέλθετε</a> και να την επαναποστείλετε."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
@@ -2181,41 +2407,53 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
-msgstr "Ikona vira"
+msgstr "εικονίδιο εισÏοής"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
-msgstr "Ikona Atom"
+msgstr "εισÏοή Atom"
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
-msgstr ""
+msgstr "Επιφυλάσσονται άπαντα τα δικαιώματα"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "↠Newer"
-msgstr ""
+msgstr "ÎεώτεÏα"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr ""
+msgstr "ΠαλιότεÏα"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
-msgstr ""
+msgstr "ΠÏος σελίδα:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr ""
+msgstr "νεώτεÏα"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr ""
+msgstr "παλιότεÏα"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Τοποθεσία"
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
@@ -2223,40 +2461,40 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr ""
+msgstr "ΕπιγεγÏαμμένο με"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
-msgstr ""
+msgstr "Το αÏχείο εικόνας δεν μπόÏεσε ν' αναγνωστεί."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
-msgstr "Opa!"
+msgstr "Ουπς!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2307,11 +2545,11 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
-msgstr ""
+msgstr "-- Επιλογή --"
#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "ΣÏναψη σημείωσης"
#: mediagoblin/user_pages/forms.py:49
msgid ""
@@ -2324,69 +2562,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
-msgstr ""
+msgstr "Ουπς, το σχόλιό σας ήταν κενό."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
-msgstr ""
+msgstr "Το σχόλιό σας αναÏτήθηκε!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
-msgstr ""
+msgstr "Έχετε διαγÏάψει αυτά τα πολυμέσα."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
-msgstr ""
+msgstr "ΠÏόκειται να διαγÏάψετε τα πολυμέσα ενός άλλου χÏήστη. ΠÏοχωÏήσετε με Ï€Ïοσοχή."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 137f0b42..00000000
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/eo/mediagoblin.po
index 9db398f9..7d8fe393 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/eo/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Esperanto (http://www.transifex.com/projects/p/mediagoblin/language/eo/)\n"
"MIME-Version: 1.0\n"
@@ -22,70 +22,174 @@ msgstr ""
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Bedaŭrinde, registrado estas malaktivigita en tiu ĉi instalaĵo."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Nevalida ensalutnomo aÅ­ retpoÅtadreso."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Ĉi tiu kampo ne akceptas retpoÅtadresojn."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Ĉi tiu kampo postulas retpoÅtadreson."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "BedaÅ­rinde, uzanto kun tiu nomo jam ekzistas."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Ni bedaÅ­ras, sed konto kun tiu retpoÅtadreso jam ekzistas."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Via retpoÅtadreso estas konfirmita. Vi povas nun ensaluti, redakti vian profilon, kaj alÅuti bildojn!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "La kontrol-kodo aÅ­ la uzantonomo ne estas korekta"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Vi devas esti ensalutita, por ke ni sciu, al kiu sendi la retleteron!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Vi jam konfirmis vian retpoÅtadreson!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Resendi vian kontrol-mesaÄon."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titolo"
@@ -94,7 +198,7 @@ msgid "Description of this work"
msgstr "Priskribo de ĉi tiu verko"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -110,11 +214,11 @@ msgstr "Etikedoj"
msgid "Separate tags by commas."
msgstr "Dividu la etikedojn per komoj."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "La distingiga adresparto"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "La distingiga adresparto ne povas esti malplena"
@@ -142,125 +246,137 @@ msgstr "Retejo"
msgid "This address contains errors"
msgstr "Ĉi tiu adreso enhavas erarojn"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "RetpoÅtu min kiam aliaj komentas pri miaj alÅutaĵoj."
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Permesila prefero"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Tiu ĉi permesilo estos antaÅ­elektita en la alÅutformularoj."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "La titolo ne povas malpleni."
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Priskribo de la kolekto"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "La distingiga adresparto de ĉi tiu kolekto. Ordinare ne necesas Äin ÅanÄi."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "La malnova pasvorto"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Enigu vian malnovan pasvorton por pruvi, ke ĉi tiu konto estas via."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "La nova pasvorto"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Pasvorto"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Ĉi tiu uzanto jam havas dosieron kun tiu distingiga adresparto."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Vi priredaktas dosieron de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Vi aldonis la kundosieron %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Vi povas redakti nur vian propran profilon."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Vi redaktas profilon de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "ProfilÅanÄoj estis konservitaj"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Kontagordoj estis konservitaj"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Vi bezonas konfirmi la forigon de via konto."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Vi jam havas kolekton kun la nomo «%s»!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Ĉi tiu uzanto jam havas kolekton kun tiu distingiga adresparto."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Vi redaktas kolekton de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "MalÄusta pasvorto"
@@ -291,7 +407,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -299,58 +415,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -376,28 +492,28 @@ msgstr "Priskribo"
msgid "I am sure I want to delete this"
msgstr "Jes, mi volas forigi ĉi tion."
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Hura! AlÅutitas!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "La dosiero ne estis forigita, ĉar vi ne konfirmis vian certecon per la markilo."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -417,7 +533,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "ÅœanÄi"
@@ -427,7 +543,7 @@ msgstr "ÅœanÄi"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Forigi"
@@ -542,7 +658,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -560,26 +727,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -634,7 +801,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -763,23 +930,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -927,11 +1091,7 @@ msgstr "Sendi instrukcion"
msgid "Forgot your password?"
msgstr "Ĉu vi forgesis vian pasvorton?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Loko"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Vidi sur <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -998,7 +1158,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1011,8 +1171,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1020,39 +1180,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1076,7 +1236,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1108,26 +1268,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1151,15 +1311,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "La provizita dosiero ne konformas al la informtipo."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1178,11 +1338,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Vi devas provizi dosieron."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Kolekto «%s» aldonitas!"
@@ -1205,30 +1365,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Konfirmu viecon de la retpoÅtadreso!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "elsaluti"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Konto de <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "ÅœanÄi kontagordojn"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1236,25 +1392,29 @@ msgstr "ÅœanÄi kontagordojn"
msgid "Media processing panel"
msgstr "Kontrolejo pri dosierpreparado."
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Elsaluti"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Aldoni dosieron"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Krei novan kolekton"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1308,7 +1468,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1399,13 +1559,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Aldoni kundosierojn por %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Kundosieroj"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Aldoni kundosieron"
@@ -1423,6 +1583,47 @@ msgstr "Konservi ÅanÄojn"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "antaÅ­ %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1448,7 +1649,7 @@ msgstr "ÅœanÄado de kontagordoj de %(username)s"
msgid "Delete my account"
msgstr "Forigi mian konton."
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1502,19 +1703,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "antaÅ­ %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1527,38 +1715,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr "Dosieroj kun etikedo: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "ElÅuti"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Originalo"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "BedaÅ­rinde, ĉi tiu sonregistraĵo ne ludiÄos, \n\tĉar via TTT-legilo ne povas ludi\n\tsonaĵojn, afiÅitajn laÅ­ HTML5."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Vi povas akiri modernan TTT-legilon, kapablan \n\tsonigi la registraĵon ĉe <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "originalan dosieron"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebMan dosieron (kun Vorbisa kodaĵo)"
@@ -1566,70 +1754,70 @@ msgstr "WebMan dosieron (kun Vorbisa kodaĵo)"
msgid "Created"
msgstr "Kreita"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Bildo de «%(media_title)s»"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF-dosiero"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "DeantaÅ­e"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Desupre"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Deflanke"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "ElÅuti la modelon"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "InformaranÄo"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Alto de la objekto"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "BedaÅ­rinde, ĉi tiu filmo ne montriÄos\n ĉar via TTT-legilo ne subtenas sufiĉe\n filmojn laÅ­ HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Vi povas elÅuti modernan TTT-legilon, kapablan \n montri la filmon, de <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1643,6 +1831,32 @@ msgstr "Ĉi tie vi povas observi la staton de prilaborado de alÅutaĵoj en ĉi
msgid "Media in-processing"
msgstr "Dosieroj preparataj"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1653,6 +1867,14 @@ msgstr "Neniu dosieroj preparatas"
msgid "These uploads failed to process:"
msgstr "Preparado de ĉi tiuj alÅutaĵoj malsukcesis:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1662,6 +1884,10 @@ msgstr "Ne ekzistas malsukcesaj eroj!"
msgid "Last 10 successful uploads"
msgstr "La dek lastaj sukcesaj alÅutoj"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1676,7 +1902,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1702,6 +1928,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1951,10 +2181,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1982,17 +2208,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Aldoni komenton"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Aldoni ĉi tiun komenton"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Aldonita"
@@ -2064,12 +2290,12 @@ msgstr "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a> kun la etikedo <a
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■ПроÑмотр файлов Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2184,6 +2410,14 @@ msgstr "En kolektoj:"
msgid "Add to a collection"
msgstr "Aldoni al kolekto"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2220,6 +2454,10 @@ msgstr "pli nova"
msgid "older"
msgstr "malpli nova"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Loko"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2228,38 +2466,38 @@ msgstr ""
msgid "Tagged with"
msgstr "Markita per"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Malsukcesis lego de la bildodosiero"
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Oj!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Okazis eraro"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2327,69 +2565,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Ve, komentado estas malebligita."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Oj, via komento estis malplena."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Via komento estis afiÅita!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Bonvolu kontroli vian enigitaĵon kaj reprovi."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Necesas elekti aÅ­ aldoni kolekton"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» jam estas en la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» estis aldonita al la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Vi forigis la dosieron."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Vi estas forigonta dosieron de alia uzanto. Estu singardema."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Vi forigis la dosieron el la kolekto."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "La dosiero ne estis forigita, ĉar vi ne konfirmis vian certecon per la markilo."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Vi estas forigonta dosieron el kolekto de alia uzanto. Agu singardeme."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Vi forigis la kolekton «%s»"
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "La kolekto ne estis forigita, ĉar vi ne konfirmis vian certecon per la markilo."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Vi estas forigonta kolekton de alia uzanto. Agu singardeme."
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 354755b7..00000000
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 865562db..00000000
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1859 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# aleksejrs <deletesoftware@yandex.ru>, 2011, 2012
-# ekenbrand <ekenbrand@hotmail.com>, 2011
-# Jacobo Nájera <jacobo@gnu.org>, 2011-2012
-# Jacobo Nájera <jacobo@gnu.org>, 2013
-# Javier Di Mauro <javierdimauro@gmail.com>, 2011
-# case <juangsub@gmail.com>, 2011
-# juanman <juanma@kde.org.ar>, 2011, 2012
-# Laura Arjona Reina <larjona99@gmail.com>, 2012
-# Laura Arjona Reina <larjona99@gmail.com>, 2013-2014
-# Mario Rodriguez <msrodriguez00@gmail.com>, 2011
-# Manuel Urbano Santos <mu@member.fsf.org>, 2011
-# shackra <shackra@riseup.net>, 2012
-# Jazmín R. <stardustprincess17@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-04-11 07:54+0000\n"
-"Last-Translator: Laura Arjona Reina <larjona99@gmail.com>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/mediagoblin/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Lo sentimos, el registro está deshabilitado en este momento."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "Lo siento, el envío de informes está deshabilitado en esta instancia."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Lo siento, la autenticación está deshabilitada en esta instancia."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Nombre de usuario o correo electrónico inválido."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Este campo no acepta direcciones de correo."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Este campo requiere una dirección de correo."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Lo sentimos, ya existe un usuario con ese nombre."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Lo sentimos, ya existe un usuario con esa dirección de email."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "La clave de verificación o el identificador de usuario son incorrectos."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Tu dirección de correo electrónico ha sido verificada. ¡Ahora puedes iniciar sesión, editar tu perfil, y enviar imágenes!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "La clave de verificación o la identificación de usuario son incorrectas"
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "¡Debes iniciar sesión para que podamos saber a quién le enviamos el correo electrónico!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "¡Ya has verificado tu dirección de correo!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Se reenvió tu correo electrónico de verificación."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Título"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Descripción de esta obra"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Puedes usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para el formato."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Separa las etiquetas por comas."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Ficha"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "La ficha no puede estar vacía"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "El título de esta parte de la dirección de los contenidos. Por lo general no es necesario cambiar esto."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licencia"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Bio"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Sitio web"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "La dirección contiene errores"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Envíame un correo cuando otros escriban comentarios sobre mi contenido"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Habilitar dentro del sitio notificaciones sobre eventos."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Preferencias de licencia"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Ésta será tu licencia predeterminada en los formularios de subida."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "El título no puede estar vacío"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Descripción de esta colección"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "El título de la dirección de esta colección. Generalmente no necesitas cambiar esto."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Escribe la contraseña antigua para demostrar que esta cuenta te pertenece."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Nueva contraseña"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Nueva dirección de correo electrónico"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Contraseña"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Introduce tu contraseña para probar que posees la cuenta."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "Una entrada con esa ficha ya existe para este usuario."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Estás editando el contenido de otro usuario. Procede con precaución."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "¡Has añadido el adjunto %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Sólo puedes editar tu propio perfil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Estás editando un perfil de usuario. Procede con precaución."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Los cambios de perfil fueron salvados"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "las configuraciones de cuenta fueron salvadas"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Necesitas confirmar el borrado de tu cuenta."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "¡Ya tienes una colección llamada \"%s\"!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "Una colección con esa ficha ya existe para este usuario/a."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Estás editando la colección de otro usuario/a. Ten cuidado."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Tu dirección de correo electrónico ha sido verificada."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Contraseña incorrecta"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "No se puede enlazar al tema... no hay un tema seleccionado\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "No hay directorio activo para este tema\n\n\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Sin embargo, se encontró un enlace simbólico de un directorio antiguo; ha sido borrado.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "No se pudo enlazar \"%s\": %s existe y no es un enlace simbólico\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Omitiendo \"%s\"; ya está establecido.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Se encontró un enlace antiguo para \"%s\"; se eliminará.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "No se encuentra la cookie CSRF. Esto suele ser debido a un bloqueador de cookies o similar.<br/> Por favor asegúrate de permitir las cookies para este dominio."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Lo sentidos, No soportamos ese tipo de archivo :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "ha fallado la ejecución de unoconv, comprueba el fichero de registro (log)"
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Ha fallado la conversión de vídeo"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Retirar el privilegio"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Inhabilitar el usuario"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Enviar un mensaje al usuario"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Borrar el contenido"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "El usuario estará inhabilitado hasta:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "¿Por qué estás inhabilitando este usuario?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "¿Qué acción tomarás para resolver el informe?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "¿Qué privilegios vas a retirar?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Advertencia de"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "comentó tu publicación"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "¡Suscrito a comentarios sobre %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "No recibirás notificaciones de comentarios sobre %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Se debe proporcionar un código (token) de OAuth."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "No se ha encontrado el código (token) de petición."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "Lo siento, el archivo es demasiado grande."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Lo siento, subir este archivo sobrepasaría tu límite de subida."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Lo siento, has alcanzado tu límite de subida."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Nombre de usuario"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Nombre de usuario o correo electrónico"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Mantener iniciada la sesión"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Nombre de usuario o email"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Si esa dirección de correo (¡sensible a mayúsculas y minúsculas!) está registrada, se ha enviado un correo con instrucciones para cambiar la contraseña."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "No se ha podido encontrar a nadie con ese nombre de usuario."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Un correo electrónico ha sido enviado con instrucciones sobre cómo cambiar tu contraseña."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "No se pudo enviar un correo electrónico de recuperación de contraseñas porque tu nombre de usuario está inactivo o la dirección de su cuenta de correo electrónico no ha sido verificada."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "El identificador de usuario es incorrecto."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Ahora tu puedes iniciar sesión usando tu nueva contraseña."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "Ya no eres un usuario activo. Por favor contacta con el administrador del sistema para reactivar tu cuenta."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Se ha cambiado la contraseña correctamente"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Coloca tu nueva contraseña "
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Coloca la contraseña"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Cambiando la contraseña de %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Guardar"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "¿No tienes una cuenta?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "¡Crea una aquí!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Cambiar tu contraseña."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Recuperar contraseña"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Enviar instrucciones"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "¿Olvidaste tu contraseña?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Locación"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Ver en <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "¡Inicia sesión para crear una cuenta!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Permitir"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Denegar"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Nombre"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "El nombre del cliente OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Descripción"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Esto será visible para los usuarios que permitan tu aplicación\n\npara que puedan autenticarse."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Tipo"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Confidencial</strong> - El cliente puede hacer peticiones a la instancia GNU MediaGoblin que no pueden ser interceptadas por el agente de usuario (ejemplo: un cliente del lado del servidor).<br /><strong>Público</strong> - El cliente no puede hacer peticiones confidenciales a la instancia GNU MediaGoblin (ejemplo: un cliente JavaScript del lado del servidor)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "Redireccionar URI"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "La URI para redireccionar las aplicaciones, este campo es <strong>requerido</strong> para los clientes públicos."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Este campo es requerido para los clientes públicos"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "¡El cliente {0} ha sido registrado!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Conexiones de cliente OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Tus clientes OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Añadir "
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Lo siento, ya hay registrada una cuenta con esa OpenID."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "Lo siento, no se ha encontrado el servidor OpenID"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "No se ha encontrado el servicio OpenID para %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Falló la verificación de %s: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Verificación cancelada"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "Tu url de OpenID se ha guardado correctamente."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "No puedes borrar tu única url de OpenID a menos que tengas establecida una contraseña"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Esa OpenID no está registrada para esta cuenta."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "Se ha eliminado correctamente la OpenID."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Agregar una OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Eliminar una OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Borrar"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenID's"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "¡Hubo un fallo al iniciar sesión!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "¡Inicia sesión para crear una cuenta!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "¡O inicia sesión con contraseña!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "¡O inicia sesión con OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "¡O regístrate con OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Lo siento, ya hay una cuenta registrada para ese correo electrónico de Persona."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "La dirección de correo electrónico de Persona se ha eliminado correctamente."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "No puedes borrar tu única dirección de correo electrónico de Persona a menos que tengas establecida una contraseña."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Esa dirección de correo electrónico de Persona no está registrada para esta cuenta."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Lo siento, ya hay una cuenta registrada con esa dirección de correo electrónico de Persona."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "Se ha guardado correctamente tu dirección de correo electrónico de Persona."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Eliminar una dirección de correo electrónico de Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Agregar una dirección de correo electrónico de Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "De Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "¡O inicia sesión con Persona!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "¡O regístrate con Persona!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Archivo inválido para el formato seleccionado."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "La copia al almacenamiento público ha fallado."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "No se ha encontrado un fichero de procesamiento aceptable"
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Tamaño máximo de archivo: {0} mb"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Archivo"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Puedes usarâŽ\n<a href=\"http://daringfireball.net/projects/markdown/basics\">âŽ\nMarkdown</a> para dar formato."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Debes proporcionar un archivo."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "¡Yuju! ¡Enviado!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "¡Colección \"%s\" añadida!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Estás inhabilitado."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Imagen de un goblin estresándose"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Has sido inhabilitado"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "hasta el %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "indefinidamente"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "¡Verifica tu email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "cerrar sesión"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "Cuenta de <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Cambiar la configuración de la cuenta"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panel de procesamiento de contenido"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Cerrar sesión"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Añadir contenido"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Crear nueva colección"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr "Panel de gestión de usuarios"
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr "Panel de gestión de informes"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "El contenido más reciente"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorización"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autorizar"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Has iniciado sesión como"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "¿Quieres autorizar a"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "una aplicación desconocida"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "para que acceda a tu cuenta?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Las aplicaciones con acceso a tu cuenta pueden:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Publicar nuevos contenidos por tí"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Ver tu información (p.ej. perfil, contenidos, etc...)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Cambiar tu información"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Autorización finalizada"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Autorización completa"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copia y pega esto en tu cliente:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "¡Crea una cuenta!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Crear"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Hola %(username)s,\n\npara activar tu cuenta de GNU MediaGoblin, abre la siguiente URL en tu navegador:\n\n%(verification_url)s "
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Funciona con <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, un proyecto <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Publicado bajo la <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\"> Código fuente</a> disponible."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "Términos del Servicio"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Explorar"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Hola, ¡bienvenido a este sitio de MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Este sitio está montado con <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un extraordinario programa libre para alojar, gestionar y compartir contenido multimedia."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Para añadir tus propios contenidos, dejar comentarios y más, puedes iniciar sesión con tu cuenta de MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "¿Aún no tienes una? ¡Es fácil!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >Crear una cuenta en este sitio</a>\n o"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Instalar MediaGoblin en tu propio servidor</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Logo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Editando archivos adjuntos a %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Adjuntos"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Agregar adjunto"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Guardar cambios"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Cambiando el correo electrónico de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "¿Realmente quieres borrar el usuario '%(user_name)s' y todos sus contenidos/comentarios?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Sí, borrar mi cuenta"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Eliminar permanentemente"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Editando %(media_title)s "
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Cambio de %(username)s la configuración de la cuenta "
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Borrar mi cuenta"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Editando %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Editando el perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Hola,\n\nQueríamos verificar que eres %(username)s. Si ése es el caso, entonces \npor favor sigue el enlace de abajo para verificar tu nueva dirección de correo electrónico.\n\n%(verification_url)s\n\nSi no eres %(username)s o no solicitaste un cambio de dirección de correo electrónico,\npuedes ignorar este correo."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Nuevos comentarios"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "hace %(formatted_time)s"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Marcar todo como leído"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Contenido etiquetado con: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Descargar"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Lo sentimos, este audio audio no funcionará porque \n\ttu navegador web no soporta audio de \n\tHTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Tú puedes obtener un navegador más moderno que \n\tpueda reproducir el audio <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Archivo original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "Archivo WebM (códec Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Creado"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imágenes para %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "Archivo PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspectiva"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Frente"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Arriba"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Lateral"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Descargar modelo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Formato de Archivo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Altura del Objeto"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Lo siento, este vídeo no funcionará\n porque tu navegador no soporta \n vídeo HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "¡Puedes conseguir un navegador moderno \n que pueda reproducir este vídeo en <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "Archivo WebM (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Aquí puedes llevar un seguimiento del estado del contenido que se está procesando en esta instancia."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Procesando contenido"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "No hay contenidos en procesamiento"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Estos archivos no pudieron ser procesados:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "¡No han fallado entradas!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Últimos 10 envíos con éxito"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "¡Aún no hay entradas procesadas!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr "Lo siento, no se ha encontrado el informe."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr "Volver al panel de informes"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Informe"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Comentario enviado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr "\nâ– Informe de <a href=\"%(user_url)s\">%(user_name)s</a> sobre contenidoâŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr "\nESTE CONTENIDO DEâŽ\n<a href=\"%(user_url)s\"> %(user_name)s</a>âŽ\nHA SIDO BORRADOâŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr "Resolver"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr "Resolver este informe"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr "Estado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr "RESUELTO"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr "No puedes tomar una acción contra un administrador"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr "Panel de informes"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr "\nAquí puedes mirar informes abiertos que han sido enviados por usuarios.âŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr "Informes activos enviados"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr "Ofensor"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Cuándo se informó"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr "Informe enviado por"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Razón"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\nInforme de comentario nº %(report_id)sâŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr "\nInforme de contenido nº %(report_id)sâŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr "No se han encontrado informes abiertos."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr "Informes cerrados"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr "Resuelto"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr "Acción tomada"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr "\nInforme cerrado nº %(report_id)sâŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "No se han encontrado informes cerrados."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr "Panel de usuarios"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr "\nAquí puedes buscar usuarios de cara a tomar acciones punitivas sobre ellos.âŽ"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr "Usuarios activos"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr "Cuándo se unió"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr "Nº de comentarios enviados"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "No se han encontrado usuarios."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Añadir una colección"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Añade tu contenido "
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (%(username)s's collection)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s por <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Editar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "¿Realmente deseas eliminar %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "¿Realmente quieres quitar %(media_title)s de %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Quitar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Colecciones de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Colecciones de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Hola %(username)s,\n%(comment_author)s comentó tu publicación (%(comment_url)s) en %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Contenido de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a> con etiqueta <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "â– Explorando contenido de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Añadir un comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Añade un comentario "
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Previsualización del comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Agregado"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Añadir “%(media_title)s†a una colección"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Añadir una nueva colección"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Aquí puedes hacer un seguimiento del contenido que está siendo procesado."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Tus últimos 10 envíos exitosos"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr "<h2>Enviar un informe</h2>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr "Informar sobre este comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr "Informar sobre esta entrada de contenido"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\nâ– Publicado por <a href=\"%(user_url)s\"âŽ\nclass=\"comment_authorlink\">%(username)s</a>âŽ"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr "Enviar informe"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Aquí hay un lugar para que le cuentes a los demás sobre ti."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Editar perfil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Este usuario (todavía) no ha completado su perfil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Explorar colecciones"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Ver todo el contenido de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Aquí es donde estará ubicado tu contenido, pero parece que aún no has añadido nada."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Parece que aún no hay ningún contenido aquí..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Es necesario que verifiques tu cuenta mediante el correo de notiicación"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "¡Casi hemos terminado! Solo falta activar la cuenta."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "En unos momentos te debería llegar un correo electrónico con las instrucciones para hacerlo."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "En caso de que no:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Reenviar correo electrónico de verificación"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Alguien ya registró una cuenta con ese nombre de usuario, pero todavía no ha sido activada."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Si tú eres esa persona, pero has perdido tu correo electrónico de verificación, puedes <a href=\"%(login_url)s\">iniciar sesión</a> y reenviarlo."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(borrar)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "En la colección"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Añadir a una colección"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "Icono feed"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Atom feed"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Todos los derechos reservados"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Más nuevo"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Más antiguo →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Ir a la página:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "Más nuevo"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "Más antiguo"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr "Informar sobre contenido"
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Marcado con"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "No se pudo leer el archivo de imagen."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "¡Ups!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Ha ocurrido un error"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Petición errónea"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "La petición enviada al servidor no es válida, por favor compruébala"
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Operación no permitida"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "¡Lo siento Dave, no puedo permitir que hagas eso!</p><p>Has intentado realizar una operación no permitida. ¿Has vuelto a intentar borrar todas las cuentas de usuario?"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Parece que no hay ninguna página en esta dirección. ¡Lo siento!</p><p>Si estás seguro de que la dirección es correcta, quizá han borrado o movido la página que estás buscando."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "año"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "mes"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "semana"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "día"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hora"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minuto"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Comentario"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Puedes usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> para dar formato."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Estoy seguro de que quiero borrar esto"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Estoy seguro/a de que quiero quitar este ítem de la colección"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Colección"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Selecciona --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Incluir una nota"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Puedes usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> para dar formato."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "Razón del informe"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Lo siento, los comentarios están desactivados."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Ups, tu comentario estaba vacío."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "¡Tu comentario ha sido publicado!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Por favor, revisa tus entradas e inténtalo de nuevo."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Tienes que seleccionar o añadir una colección"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "%s\" ya está en la colección \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" añadido a la colección \"%s\""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Eliminaste el contenido"
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "El contenido no se eliminó porque no marcaste que estabas seguro."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Estás a punto de eliminar un contenido de otro usuario. Procede con precaución."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Borraste el ítem de la colección."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "El ítem no fue removido porque no confirmaste que estuvieras seguro/a."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Estás a punto de borrar un ítem de la colección de otro usuario. Procede con cuidado."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Borraste la colección \"%s\""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "La colección no fue borrada porque no confirmaste que estuvieras seguro/a."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Estás a punto de borrar la colección de otro usuario. Procede con cuidado."
diff --git a/mediagoblin/i18n/es/mediagoblin.po b/mediagoblin/i18n/es/mediagoblin.po
new file mode 100644
index 00000000..bdc63e56
--- /dev/null
+++ b/mediagoblin/i18n/es/mediagoblin.po
@@ -0,0 +1,2828 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Artopal <artopal@fastmail.fm>, 2014
+# aleksejrs <deletesoftware@yandex.ru>, 2011, 2012
+# ekenbrand <ekenbrand@hotmail.com>, 2011
+# Jacobo Nájera <jacobo@gnu.org>, 2011-2012
+# Jacobo Nájera <jacobo@gnu.org>, 2013
+# Javier Di Mauro <javierdimauro@gmail.com>, 2011
+# case <juangsub@gmail.com>, 2011
+# juanman <juanma@gnutn.org.ar>, 2011, 2012
+# Laura Arjona Reina <larjona@larjona.net>, 2012, 2015.
+# Laura Arjona Reina <larjona@larjona.net>, 2013-2014, 2015.
+# Laura Arjona Reina <larjona@larjona.net>, 2014, 2015.
+# Mario Rodriguez <msrodriguez00@gmail.com>, 2011
+# Manuel Urbano Santos <mu@member.fsf.org>, 2011
+# shackra <shackra@riseup.net>, 2012
+# Jazmín R. <stardustprincess17@hotmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-02-27 21:19+0000\n"
+"Last-Translator: larjona <larjona@larjona.net>\n"
+"Language-Team: Spanish "
+"(http://www.transifex.com/projects/p/mediagoblin/language/es/)\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1425071985.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Lo sentimos, el registro está deshabilitado en este momento."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Lo sentimos, el envío de informes está deshabilitado en esta instancia."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Lo sentimos, la autenticación está deshabilitada en esta instancia."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Nombre de usuario o correo electrónico no válidos."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Este campo no acepta direcciones de correo."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Este campo requiere una dirección de correo."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Lo sentimos, ya existe un usuario con ese nombre."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Lo sentimos, ya existe un usuario con esa dirección de correo."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "La clave de verificación o el identificador de usuario son incorrectos."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Tu dirección de correo electrónico ha sido verificada. ¡Ahora puedes iniciar sesión, editar tu perfil, y enviar imágenes!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "La clave de verificación o la identificación de usuario son incorrectas"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "¡Debes iniciar sesión para que podamos saber a quién le enviamos el correo electrónico!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "¡Ya has verificado tu dirección de correo!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Se reenvió tu correo electrónico de verificación."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} agregó {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} agregó {object} a {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} tomó la autoría de {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} creó {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} eliminó {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "A {username} no le gustó {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} marcó como favorito {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} siguió {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "A {username} le gustó {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} publicó {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} publicó {object} en {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} compartió {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} quitó de favoritos {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} dejó de seguir a {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "A {username} le dejó de gustar {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} dejó de compartir {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} actualizó {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} etiquetó {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "una imagen"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "un comentario"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "una colección"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "un vídeo"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "sonido"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "una persona"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "un objeto"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Título"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Descripción de esta obra"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Puedes usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para el formato."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Separa las etiquetas por comas."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Ficha"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "La ficha no puede estar vacía"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "El título de esta parte de la dirección de los contenidos. Por lo general no es necesario cambiar esto."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licencia"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Bio"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Sitio web"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "La dirección contiene errores"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Lugar de origen"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Envíame un correo cuando otros escriban comentarios sobre mi contenido"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Habilitar dentro del sitio notificaciones sobre eventos."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Preferencias de licencia"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Ésta será tu licencia predeterminada en los formularios de subida."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "El título no puede estar vacío"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Descripción de esta colección"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "El título de la dirección de esta colección. Generalmente no necesitas cambiar esto."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Contraseña antigua"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Escribe la contraseña antigua para demostrar que esta cuenta te pertenece."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nueva contraseña"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Nueva dirección de correo electrónico"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Contraseña"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Introduce tu contraseña para probar que posees la cuenta."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identificador"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Valor"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Una entrada con esa ficha ya existe para este usuario."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Estás editando el contenido de otro usuario. Procede con precaución."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "¡Has añadido el adjunto %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Sólo puedes editar tu propio perfil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Estás editando un perfil de usuario. Procede con precaución."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Se grabaron los cambios del perfil"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Se grabó la configuración de la cuenta"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Aplicación desconocida, no se puede desautorizar"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Se ha desautorizado la aplicación"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Necesitas confirmar el borrado de tu cuenta."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "¡Ya tienes una colección llamada \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "Una colección con esa ficha ya existe para este usuario/a."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Estás editando la colección de otro usuario. Procede con precaución."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Tu dirección de correo electrónico ha sido verificada."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Contraseña incorrecta"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "No se puede enlazar al tema... no hay un tema seleccionado\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "No hay directorio activo para este tema\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Sin embargo, se encontró un enlace simbólico de un directorio antiguo; ha sido borrado.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "No se pudo enlazar \"%s\": %s existe y no es un enlace simbólico\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Omitiendo \"%s\"; ya está establecido.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Se encontró un enlace antiguo para \"%s\"; se eliminará.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Para más información sobre cómo ejecutar este\nguión (y como dar formato al fichero csv de metadatos), lea la página\nde documentación de Mediagoblin sobre carga de ficheros desde línea de comandos\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Nombre del usuario al que pertenecen estos contenidos"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Ruta al archivo csv que contiene la información sobre metadatos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "No procesar inmediatamente, pasarlo a celery"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Lo sentimos, no existe un usuario con nombre '{username}'"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "No se ha encontrado el archivo en {path}, use la opción -h para ayuda"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Error con el contenido '{media_id}' valor '{error_path}': {error_msg}\nNo se han cargado los metadatos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "ERROR: No se ha podido acceder al fichero local {filename}.\nNo se cargará {filename}."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+"¡Enviado con éxito {filename}!\n"
+"Asegúrate de mirar en el panel de procesamiento de contenido del sitio web "
+"para comprobar\n"
+" que se ha cargado bien."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "ERROR: Este archivo supera los límites de carga de este sitio."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "ERROR: Este archivo hace que el usuario supere su límite de carga."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "ERROR: Este usuario ya ha sobrepasado su límite de carga."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} de {files_attempted} archivos enviados correctamente"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+"No se encuentra la cookie CSRF. Esto suele ser debido a un bloqueador de "
+"cookies o similar.<br/>Por favor asegúrate de permitir las cookies para este "
+"dominio."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Lo sentimos, no soportamos ese tipo de archivo :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Descripción"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Estoy seguro de que quiero borrar esto"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "¡Yuju! ¡Enviado!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "¡Yuju! se ha enviado el artículo de blog editado"
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Has borrado el Blog."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "El contenido no se eliminó porque no marcaste que estabas seguro."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Vas a borrar el Blog de otro usuario. Procede con precaución."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "El blog no se ha borrado porque no tienes permisos."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Añadir un artículo de blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Editar blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Borrar blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Editar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Borrar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Ir a la vista de lista </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr " No hay artículos de blog. "
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "¿Realmente deseas eliminar %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Eliminar permanentemente"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Crear/Editar un blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Añadir "
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Crear/Editar un artículo de blog."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Crear/Editar un artículo de blog."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Blog de %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Ver"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Crear un blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr " Escritorio del blog "
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "ha fallado la ejecución de unoconv, comprueba el fichero de registro (log)"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Ha fallado la conversión de vídeo"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Retirar permisos"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Inhabilitar el usuario"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Enviar un mensaje al usuario"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Borrar el contenido"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "El usuario estará inhabilitado hasta:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "¿Por qué estás inhabilitando este usuario?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "¿Qué acción tomarás para resolver el informe?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "¿Qué permisos vas a retirar?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Por qué se inhabilitó al usuario:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Mensaje al usuario:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Contenido de la resolución:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} retiró al usuario {user} los permisos de {privilege}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} inhabilitó al usuario {user} hasta {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "hasta {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "indefinidamente"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} envió un correo de advertencia al {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} eliminó el comentario."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} borró el contenido."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Advertencia de"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "comentó tu publicación"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "¡Suscrito a comentarios sobre %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "No recibirás notificaciones de comentarios sobre %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Se debe proporcionar un código (token) de OAuth."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "No se ha encontrado el código (token) de petición."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Lo sentimos, el archivo es demasiado grande."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "Lo sentimos, subir este archivo sobrepasaría tu límite de subida."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Lo sentimos, has alcanzado tu límite de subida."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Indica la URL del contenido a destacar"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "Primario"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Secundario"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Terciario"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "----------- Contenido destacado - {display_type}---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "¿Cómo funciona?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "¿Cómo destacar contenidos?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr "\n Ve a la página del contenido que quieres destacar. Copia su URL y\n pégala en una línea nueva de la caja de texto de arriba. Debería haber sólo\n una URL por línea. La URL que has pegado en la caja de texto debería estar bajo \nla cabecera que describe cómo de prominente será (primario, secundario \no terciario). Una vez todo el contenido que quieres destacar esté dentro \nde la caja de texto, haz clic en el botón de Enviar Consulta, y tu contenido \ndebería mostrarse en la portada.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "¿Hay alguna otra manera de gestionar el contenido destacado?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+"\n"
+" Sí. Si lo prefieres, puedes ir a la página del contenido que te "
+"gustaría destacar\n"
+" o quitar de destacados, y mirar en la barra lateral junto al "
+"contenido. Si el contenido\n"
+" aún no se ha destacado, debería haber un botón que ponga \"Destacar\". "
+"Pulsa ese botón\n"
+" y el contenido se destacará como primario, al inicio de la portada.\n"
+" Todos los demás contenidos destacados seguirán destacados, pero se "
+"mostrarán debajo\n"
+"en la página de portada.<br /><br />\n"
+"\n"
+" Si vas a la página de un contenido que actualmente ya está destacado, "
+"verás las opciones\n"
+" \"Quitar de destacados\", \"Ascender\" y \"Descender\"\n"
+" donde antes se mostraba \"Destacar\".\n"
+" Haz clic\n"
+" en Quitar de destacados y ese contenido ya no se mostrará en la "
+"portada,\n"
+" aunque puedes volver a destacarlo en cualquier momento. Ascender\n"
+" mueve el contenido destacado más arriba en la portada y lo hace más\n"
+" prominente, y Descender mueve el contenido más abajo y lo hace\n"
+" menos prominente.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+"\n"
+" Sí. Si lo prefieres, puedes ir a la página del contenido\n"
+" que te gustaría destacar o quitar de destacados, y mirar en la barra "
+"lateral\n"
+" junto al contenido. Si el contenido aún no se ha destacado,\n"
+" debería haber un botón que ponga \"Destacar\". Pulsa ese botón\n"
+" y el contenido se destacará como primario, al inicio de la portada.\n"
+" Todos los demás contenidos destacados seguirán destacados, pero se "
+"mostrarán debajo\n"
+" en la página de portada.<br /><br />\n"
+"\n"
+" Si vas a la página de un contenido que actualmente ya está\n"
+" destacado, verás las opciones \"Quitar de destacados\", \"Ascender\" y "
+"\"Descender\"\n"
+" donde antes se mostraba \"Destacar\". Haz clic en\n"
+" Quitar de destacados y ese contenido ya no se mostrará en la "
+"portada,\n"
+" aunque puedes volver a destacarlo en cualquier momento. Ascender\n"
+" mueve el contenido destacado más arriba en la portada y lo hace más\n"
+" prominente, y Descender mueve el contenido más abajo y lo hace\n"
+" menos prominente.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+"\n"
+" Estas categorías describen lo prominente que un contenido destacado "
+"será en\n"
+" la portada. Los contenidos destacados primarios se colocan al inicio "
+"de la portada y son\n"
+" más grandes. Después van los contenidos destacados secundarios, que "
+"son algo más pequeños.\n"
+" Los contenidos destacados terciarios forman una rejilla al final de la "
+"página.<br /><br />\n"
+"\n"
+" Los contenidos destacados primarios también pueden mostrar "
+"descripciones más largas que los contenidos destacados secundarios,\n"
+" y los contenidos destacados secundarios pueden mostrar descripciones "
+"más largas que los contenidos\n"
+" destacados terciarios."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+"¿Cómo decidir qué información se muestra cuando se destaca\n"
+" un contenido?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+"\n"
+" Cuando se destaca un contenido, su título, su miniatura y una\n"
+" porción de su descripción se mostrarán en la portada de tu sitio web.\n"
+" El número de caracteres mostrado varía según la prominencia del "
+"destacado.\n"
+" Los destacados primarios muestran los primeros 512 caracteres de su "
+"descripción, \n"
+" los destacados secundarios muestran los primeros 256 caracteres de su "
+"descripción, \n"
+" y los destacados terciarios muestran los primeros 128 caracteres de su "
+"descripción.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "¿Cómo dejar de destacar un contenido?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+"\n"
+" Deja de destacar un contenido eliminando su línea del área de texto de "
+"arriba\n"
+" y pulsando el botón Enviar Consulta.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "PRECAUCIÓN:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+"\n"
+" Cuando se copian y pegan URLs en la caja de texto de arriba, ten en "
+"cuenta que\n"
+" si hay alguna errata, aunque pulses Enviar Consulta, el contenido NO\n"
+" se destacará. Verifica que todos los contenidos que querías destacar "
+"se han destacado.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr "\nDestacar contenido "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Destacar"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr "\nQuitar de destacados"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Quitar de destacados"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr "\nAscender el destacado"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Ascender"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr "\nDescender el destacado"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Descender"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "El contenido más reciente"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "No hay nada destacado actualmente."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr "Si te gustaría destacar\nun contenido, ve a la página de ese contenido y pulsa el botón\nque dice <a class=\"button_action\">Destacar</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+"Estás viendo esta página porque eres un usuario con permisos para\n"
+" destacar contenido, un usuario normal vería una página en blanco, "
+"así que\n"
+" asegúrate de destacar contenido mientras tu sitio tenga el "
+"complemento\n"
+" 'archivalook' activado. Se puede encontrar una herramienta más "
+"avanzada para gestionar los destacados\n"
+" en el <a href=\"%(featured_media_url)s\">panel de gestión de "
+"destacados.</a>"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Ver el contenido más reciente"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Panel de gestión de destacados"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+"Lo sentimos, este audio no funcionará porque \n"
+"\ttu navegador web no soporta audio en \n"
+"\tHTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "¡Puedes conseguir un navegador web moderno, que\n\tpueda reproducir el audio, en <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+"Lo sentimos, este vídeo no funcionará porque\n"
+" tu navegador web no soporta vídeo en \n"
+" HTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+"¡Puedes conseguir un navegador web moderno, que\n"
+" pueda reproducir el vídeo, en <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Nombre de usuario"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Dirección de correo electrónico"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Nombre de usuario o correo electrónico"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Mantener iniciada la sesión"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Nombre de usuario o correo electrónico"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Si esa dirección de correo (¡sensible a mayúsculas y minúsculas!) está registrada, se ha enviado un correo con instrucciones para cambiar la contraseña."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "No se ha podido encontrar a nadie con ese nombre de usuario."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Hemos enviado un correo electrónico con instrucciones sobre cómo cambiar tu contraseña."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "No pudimos enviar un correo electrónico de recuperación de contraseñas porque tu nombre de usuario está inactivo o la dirección de su cuenta de correo electrónico no ha sido verificada."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "El identificador de usuario es incorrecto."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Ahora puedes iniciar sesión usando tu nueva contraseña."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "Ya no eres un usuario activo. Por favor contacta con el administrador del sistema para reactivar tu cuenta."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Se ha cambiado la contraseña correctamente"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Establece tu nueva contraseña "
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Establecer la contraseña"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Cambiando la contraseña de %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Guardar"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "¿No tienes una cuenta?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "¡Crea una aquí!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Cambiar tu contraseña."
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Recuperar contraseña"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Enviar instrucciones"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "¿Olvidaste tu contraseña?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Ver en <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "¡Inicia sesión para crear una cuenta!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadatos"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Editar metadatos"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permitir"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Denegar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nombre"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "El nombre del cliente OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+"Esto será visible para los usuarios que permitan tu aplicación\n"
+" para que puedan autenticarse."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Tipo"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+"<strong>Confidencial</strong> - El cliente puede\n"
+" hacer peticiones a la instancia GNU MediaGoblin que no "
+"puedan\n"
+" ser interceptadas por el agente de usuario (ejemplo: un "
+"cliente del lado del servidor).<br />\n"
+" <strong>Público</strong> - El cliente no puede hacer "
+"peticiones\n"
+" confidenciales a la instancia GNU MediaGoblin (ejemplo: un "
+"cliente\n"
+" JavaScript del lado del cliente)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "Redireccionar URI"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+"La URI para redireccionar las aplicaciones, este campo\n"
+" es <strong>requerido</strong> para los clientes públicos."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Este campo es requerido para los clientes públicos"
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "¡El cliente {0} ha sido registrado!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Conexiones de cliente OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Tus clientes OAuth"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Lo sentimos, ya hay registrada una cuenta con esa OpenID."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Lo sentimos, no se ha encontrado el servidor OpenID"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "No se ha encontrado el servicio OpenID para %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Falló la verificación de %s: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Verificación cancelada"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "Tu url de OpenID se ha guardado correctamente."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+"No puedes borrar tu única URL de OpenID a menos que tengas establecida una "
+"contraseña"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Esa OpenID no está registrada para esta cuenta."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "Se ha eliminado correctamente la OpenID."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Agregar una OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Eliminar una OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "De OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Iniciar sesión"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "¡Hubo un fallo al iniciar sesión!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "¡Inicia sesión para crear una cuenta!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "¡O inicia sesión con contraseña!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "¡O inicia sesión con OpenID!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "¡O regístrate con OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+"Lo sentimos, ya hay una cuenta registrada para ese correo electrónico de "
+"Persona."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "La dirección de correo electrónico de Persona se ha eliminado correctamente."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "No puedes borrar tu única dirección de correo electrónico de Persona a menos que tengas establecida una contraseña."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Esa dirección de correo electrónico de Persona no está registrada para esta cuenta."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+"Lo sentimos, ya hay una cuenta registrada con esa dirección de correo "
+"electrónico de Persona."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "Se ha guardado correctamente tu dirección de correo electrónico de Persona."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Eliminar una dirección de correo electrónico de Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Agregar una dirección de correo electrónico de Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "De Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "¡O inicia sesión con Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "¡O regístrate con Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Archivo inválido para el formato seleccionado."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "La copia al almacenamiento público ha fallado."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "No se ha encontrado un fichero de procesamiento aceptable"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Tamaño máximo de archivo: {0} mb"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Archivo"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Puedes usarâŽ\n<a href=\"http://daringfireball.net/projects/markdown/basics\">âŽ\nMarkdown</a> para dar formato."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Debes proporcionar un archivo."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "¡Colección \"%s\" añadida!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Estás inhabilitado."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imagen de un goblin estresándose"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Has sido inhabilitado"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "hasta el %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "¡Verifica tu correo!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "cerrar sesión"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "Cuenta de <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Cambiar la configuración de la cuenta"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Panel de procesamiento de contenido"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Cerrar sesión"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Añadir contenido"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Crear nueva colección"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Poderes de moderación:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Panel de gestión de usuarios"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Panel de gestión de informes"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorización"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autorizar"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Has iniciado sesión como"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "¿Quieres autorizar a "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "una aplicación desconocida"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr " para que acceda a tu cuenta? "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Las aplicaciones con acceso a tu cuenta pueden:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Publicar nuevos contenidos por tí"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Ver tu información (p.ej. perfil, contenidos, etc...)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Cambiar tu información"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorización finalizada"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorización completa"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Copia y pega este <strong>código de verificación</strong> en tu cliente:"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "¡Crea una cuenta!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Crear"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+"Hola %(username)s,\n"
+"\n"
+"para activar tu cuenta de GNU MediaGoblin, abre la siguiente URL en\n"
+"tu navegador:\n"
+"\n"
+"%(verification_url)s "
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Funciona con <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, un proyecto <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Publicado bajo la <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\"> Código fuente</a> disponible."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Términos del Servicio"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Explorar"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Hola, ¡bienvenido a este sitio de MediaGoblin!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Este sitio está montado con <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un extraordinario programa libre para alojar, gestionar y compartir contenido multimedia."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Para añadir tus propios contenidos, dejar comentarios y más, puedes iniciar sesión con tu cuenta de MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "¿Aún no tienes una? ¡Es fácil!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n >Crear una cuenta en este sitio</a>\n o"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Instalar MediaGoblin en tu propio servidor</a>"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logo de MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Editando archivos adjuntos a %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Adjuntos"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Agregar adjunto"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Guardar cambios"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Cambiando el correo electrónico de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Desautorizar aplicaciones"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Desautorizar Aplicaciones"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr "Estas aplicaciones pueden acceder a tu cuenta de GNU MediaGoblin. Desautorizando\nla aplicación, se evitará que la aplicación acceda a tu cuenta."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "No hay aplicaciones autorizadas."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Tipo:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Autorizada:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "hace %(formatted_time)s"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "¿Realmente quieres borrar el usuario '%(user_name)s' y todos sus contenidos/comentarios?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Sí, borrar mi cuenta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Editando %(media_title)s "
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "Cambio de %(username)s la configuración de la cuenta "
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Borrar mi cuenta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Editando %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Editando el perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadatos de \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Metadatos"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Añadir nueva línea"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Actualizar metadatos"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Borrar las líneas vacías"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Hola,\n\nQueríamos verificar que eres %(username)s. Si ése es el caso, entonces \npor favor sigue el enlace de abajo para verificar tu nueva dirección de correo electrónico.\n\n%(verification_url)s\n\nSi no eres %(username)s o no solicitaste un cambio de dirección de correo electrónico,\npuedes ignorar este correo."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Nuevos comentarios"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Marcar todo como leído"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Contenido etiquetado con: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Descargar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+"Lo sentimos, este sonido no funcionará, porque \n"
+"\t tu navegador web no soporta sonido\n"
+"\t HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "¡Puedes conseguir un navegador moderno \n\t que pueda reproducir el sonido en <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Archivo original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "Archivo WebM (códec Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Creado"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imágenes para %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "Archivo PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Frente"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Arriba"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Lateral"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Descargar modelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formato de Archivo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Altura del Objeto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+"Lo sentimos, este vídeo no funcionará\n"
+" porque tu navegador no soporta \n"
+" vídeo HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "¡Puedes conseguir un navegador moderno \n que pueda reproducir este vídeo en <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "Archivo WebM (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Aquí puedes llevar un seguimiento del estado del contenido que se está procesando en esta instancia."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Procesando contenido"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Usuario"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Cuándo se envió"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Proceso de transcodificación"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "No hay contenidos en procesamiento"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Estos archivos no pudieron ser procesados:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Motivo del fallo"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadatos del fallo"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "¡No han fallado entradas!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Últimos 10 envíos con éxito"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Enviado"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "¡Aún no hay entradas procesadas!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Lo sentimos, no se ha encontrado el informe."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Volver al panel de informes"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Informe"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Comentario enviado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+"\n"
+" â– Informe de <a href=\"%(user_url)s\">%(user_name)s</a> sobre "
+"contenido\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+"\n"
+" ESTE CONTENIDO DE\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HA SIDO BORRADO\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Razón del informe:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Resolver"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Resolver este informe"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Estado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "RESUELTO"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "No puedes tomar una acción contra un administrador"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Panel de informes"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+"\n"
+" Aquí puedes mirar informes abiertos que han sido enviados por usuarios.\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr "Informes activos enviados"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Ofensor"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Cuándo se informó"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Informe enviado por"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Razón"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+"\n"
+" Informe de comentario nº %(report_id)s\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+"\n"
+" Informe de contenido nº %(report_id)s\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "No se han encontrado informes abiertos."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Informes cerrados"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Resuelto"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Acción tomada"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+"\n"
+" Informe cerrado nº %(report_id)s\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "No se han encontrado informes cerrados."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Usuario: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Volver al panel de usuarios"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Lo sentimos, no se ha encontrado ese usuario."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Es necesario que verifiques tu cuenta mediante el correo de notiicación"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "Alguien ha registrado una cuenta con ese nombre de usuario, pero aún debe\n activarla."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "INHABILITADO hasta %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "Inhabilitado indefinidamente"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Este usuario (todavía) no ha completado su perfil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Explorar colecciones"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Informes sobre %(username)s activos"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "ID de informe"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Contenido informado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Descripción del informe"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Informe #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Comentario informado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Contenido informado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "No hay informes activos sobre %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Todos los informes sobre %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Todos los informes que ha enviado %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "Permisos de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Permiso"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Concedido"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Sí"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "No"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Inhabilitar usuario"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Habilitar usuario"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Panel de usuarios"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+"\n"
+" Aquí puedes buscar usuarios de cara a tomar acciones punitivas sobre "
+"ellos.\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Usuarios activos"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Cuándo se unió"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "Nº de comentarios enviados"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "No se han encontrado usuarios."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Añadir una colección"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Añade tu contenido "
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Artículo de blog de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Añadir un comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Añade un comentario "
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Agregado"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (colección de %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s por <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Borrar colección %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "¿Seguro que deseas borrar la colección: %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Quitar %(media_title)s de %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "¿Realmente quieres quitar %(media_title)s de %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Quitar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Colecciones de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Colecciones de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Hola %(username)s,\n%(comment_author)s comentó tu publicación (%(comment_url)s) en %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Contenido de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a> con etiqueta <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Explorando contenido de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Previsualización del comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Añadir “%(media_title)s†a una colección"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Añadir una nueva colección"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Aquí puedes hacer un seguimiento del contenido que está siendo procesado."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Tus últimos 10 envíos exitosos"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Enviar un informe</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Informar sobre este comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "Informar sobre esta entrada de contenido"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+"\n"
+" â– Publicado por <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Enviar informe"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Aquí hay un lugar para que le cuentes a los demás sobre ti."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Ver todo el contenido de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Aquí es donde estará ubicado tu contenido, pero parece que aún no has añadido nada."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Parece que aún no hay ningún contenido aquí..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "¡Casi hemos terminado! Solo falta activar la cuenta."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "En unos momentos te debería llegar un correo electrónico con las instrucciones para hacerlo."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "En caso de que no:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Reenviar correo electrónico de verificación"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Alguien ya registró una cuenta con ese nombre de usuario, pero todavía no ha sido activada."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Si tú eres esa persona, pero has perdido tu correo electrónico de verificación, puedes <a href=\"%(login_url)s\">iniciar sesión</a> y reenviarlo."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(borrar)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "En la colección"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Añadir a una colección"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Suscribirse a los comentarios"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Silenciar comentarios"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "Icono del feed"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom feed"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Todos los derechos reservados"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Más nuevo"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Más antiguo →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Ir a la página:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "más nuevo"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "más antiguo"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Lugar"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Informar sobre contenido"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Marcado con"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "No se pudo leer el archivo de imagen."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "¡Ups!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Ha ocurrido un error"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Petición errónea"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "La petición enviada al servidor no es válida, por favor compruébala"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Operación no permitida"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+"¡Lo siento Dave, no puedo permitir que hagas eso!</p><p>Has intentado "
+"realizar una operación no permitida. ¿Has vuelto a intentar borrar todas las "
+"cuentas de usuario?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+"Parece que no hay ninguna página en esta dirección. ¡Lo sentimos!</p><p>Si "
+"estás seguro de que la dirección es correcta, quizá han borrado o movido la "
+"página que estás buscando."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "año"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "mes"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "semana"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "día"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hora"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minuto"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comentario"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Puedes usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> para dar formato."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Estoy seguro/a de que quiero quitar este ítem de la colección"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Colección"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Selecciona --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Incluir una nota"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Puedes usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\nMarkdown</a> para dar formato."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Razón del informe"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Lo sentimos, los comentarios están desactivados."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Ups, tu comentario estaba vacío."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "¡Tu comentario ha sido publicado!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Por favor, revisa tus entradas e inténtalo de nuevo."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Tienes que seleccionar o añadir una colección"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" ya está en la colección \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" añadido a la colección \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Eliminaste el contenido."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Estás a punto de eliminar un contenido de otro usuario. Procede con precaución."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Borraste el ítem de la colección."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "El ítem no fue removido porque no confirmaste que estuvieras seguro/a."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Estás a punto de borrar un ítem de la colección de otro usuario. Procede con cuidado."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Borraste la colección \"%s\""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "La colección no fue borrada porque no confirmaste que estuvieras seguro/a."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Estás a punto de borrar la colección de otro usuario. Procede con cuidado."
diff --git a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index d34969b6..00000000
--- a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 99459757..00000000
--- a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1848 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Numb <amir007ag@gmail.com>, 2012
-# b.tavakkoli <b.tavakkoli@gmail.com>, 2014
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-06-03 11:57+0000\n"
-"Last-Translator: b.tavakkoli <b.tavakkoli@gmail.com>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/mediagoblin/language/fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ØŒØ«Ø¨ØªÙ†Ø§Ù… به طور موقت غیر ÙØ¹Ø§Ù„ است."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "شرمنده، قابلیت گزارش دادن در این نمونه غیر ÙØ¹Ø§Ù„ است."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "شرمنده، تایید اعتبار در این نمونه ØºÛŒØ±ÙØ¹Ø§Ù„ گردیده است."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "نام کاربری یا آدرس ایمیل وارد شده اشتباه می‌باشد."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "این گزینه بایستی توسط یک ایمیل آدرس تکمیل گردد."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ کاربری با این نام کاربری وجود دارد."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "متاسÙیم، یک کاربر با آدرس ایمیل مورد نظر شما در سیستم ما وجود دارد."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "کلید تایید هویت یا نام کاربری اشتباه است."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "ایمیل شما تایید شد.شما می توانید حالا وارد شوید،نمایه خود را ویرایش کنید و تصاویر خود را ثبت کنید!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "این کد تاییدیه یا شناسه کاربری صحیح نیست."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "شما بایستی وارد سیستم شوید تا ما بدانیم ایمیل را به چه شخصی ارسال نماییم!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "شما در حال حاضر آدرس ایمیل خود را تایید نموده‌اید!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "ایمیل تاییدیه باز ارسال شد."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "عنوان"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "توصی٠این عمل"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "شما می‌توانید از \n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> برای شکل‌دهی به متن Ø§Ø³ØªÙØ§Ø¯Ù‡ نمایید."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "برچسب"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "تگ‌ها را توسط کاما (,) از یک‌دیگر جدا نمایید."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "بخش عنوان آدرس این ÙØ§ÛŒÙ„ چندرسانه‌ای. شما معمولا نیازی به تغییر آن ندارید."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "زندگینامه"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "وبسایت"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "این آدرس شامل موارد غیرمجاز است"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "وقتی دیگران بر روی موارد قرار داده شده توسط من نظر گذاشتند به من ایمیل بزن"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "تنظیمات مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "این مورد مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡â€ŒÛŒ Ù¾ÛŒØ´â€ŒÙØ±Ø¶ شما در ØµÙØ­Ù‡â€ŒÛŒ آپلود خواهد بود."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "عنوان نمی‌تواند خالی باشد"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "معرÙÛŒ این مجموعه"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "بخش عنوان این آدرس مجموعه، شما معمولا نیازی به تغییر این مورد ندارید."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "رمز عبور ÙØ¹Ù„ÛŒ"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "رمز عبور قدیمی خود را وارد نمایید تا تایید نمایید شما صاحب این حساب کاربری هستید."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "رمز عبور جدید"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "آدرس ایمیل جدید"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "گذرواٰژه"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "رمز عبور خود را وارد نمایید تا تایید گردد شما صاحب این حساب کاربری هستید."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr ""
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "شما در حال ویرایش رسانه کاربر دیگری هستید.با احتیاط عمل کنید"
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr ""
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "شما Ùقط قادر به ویرایش Ù¾Ø±ÙˆÙØ§ÛŒÙ„ خود می‌باشید."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "شما در حال ویرایش نمایه کاربر دیگری هستید.با احتیاط عمل کنید."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "تغییرات در Ù¾Ø±ÙˆÙØ§ÛŒÙ„ شما ذخیره گردید"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "تنظیمات حساب کاربری شما ذخیره گردید"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "شما نیاز دارید تا حذ٠شدن حساب کاربری خود را تایید نمایید."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "شما در حال حاضر یک مجموعه با نام \"%s\" دارید!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr ""
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "شما در حال ویرایش مجموعه‌ی شخص دیگری هستید، Ù„Ø·ÙØ§ با احتیاط عمل نمایید."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "آدرس ایمیل شما تایید گردید."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "رمز عبور اشتباه است"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr ""
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "شرمنده، نوع ÙØ§ÛŒÙ„ چندرسانه‌ای شما قابل پشتیبانی نیست :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr ""
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "این حساب کاربری را ببند"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "یک پیغام برای این کاربر Ø¨ÙØ±Ø³ØªÛŒØ¯"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "محتوا را حذ٠کن"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "این حساب کاربری تا این زمان بسته باشد:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "چرا شما این حساب کاربری را می‌بندید؟"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr ""
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr ""
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "بر روی ارسال شما نظری گذاشته است"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr ""
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "شما اعلانات مربوط به نظرات جدید در %s را Ø¯Ø±ÛŒØ§ÙØª نخواهید کرد."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "رشته‌ی تایید هویت درخواستی ÛŒØ§ÙØª نگردید."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "نام کاربری"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "آدرس ایمیل"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "نام کاربری یا آدرس ایمیل"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "مرا به خاطر داشته باش"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "نام کاربری یا آدرس ایمیل"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "سیستم قادر به ÛŒØ§ÙØªÙ† شخصی با نام کاربری ارائه شده نمی باشد."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "یک ایمیل که نحوه‌ی تغییر رمز عبور شما را شرح داده است، ارسال گردید."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "سیستم نمی‌تواند ایمیل بازیابی رمز عبور شما را ارسال نماید، به دلیل آن‌که نام کاربری شما ÙØ¹Ø§Ù„ نیست یا ایمیلی Ú©Ù‡ با آن ثبت‌نام نموده‌اید هنوز تایید نشده است."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "نام کاربری اشتباه است."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "شما هم‌اکنون می‌توانید با رمز عبور جدید خود وارد سیستم گردید."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "حساب کاربری شما دیگر ÙØ¹Ø§Ù„ نیست. Ù„Ø·ÙØ§ با مدیر سیستم جهت ÙØ¹Ø§Ù„‌سازی حساب کاربری خود تماس بگیرید."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "رمز عبور شما با موÙقیت تغییر ÛŒØ§ÙØª"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "رمز عبور جدید خود را تنظیم نمایید"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "رمز عبور خود را تنظیم نمایید"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "تغییر رمز عبور کاربر %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "ذخیره"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "آیا حساب کاربری ندارید؟"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "در اینجا یکی بسازید!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "بازیابی رمز عبور"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "ارسال دستورالعمل"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "رمز عبور خود را ÙØ±Ø§Ù…وش نموده‌اید؟"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "محل"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "بر روی <a href=\"%(osm_url)s\">OpenStreetMap</a> ببنید"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "اجازه"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "منع"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "نام"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "نام در کلاینت OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "توضیح"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "نوع"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "آدرس بازگشت"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "اضاÙÙ‡ نمودن"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "شرمنده، یک حساب کاربری در حال حاضر با OpenID مد نظر شما ثبت گردیده است."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "شرمنده، سرور OpenID نمی‌تواند ÛŒØ§ÙØª شود"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "خدمات OpenID برای %s ÛŒØ§ÙØª نگردید."
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "تایید %s با شکست روبرو گردید: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "درخواست تایید لغو گردید"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "آدرس OpenID شما با موÙقیت ذخیره گردید."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "شما نمی‌توانید تنها آدرس OpenID خود را تا زمانی که رمز عبوری برای آن تنظیم نموده‌اید، حذ٠نمایید"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "OpenID مد نظر شما برای این حساب کاربری ثبت نگردیده است."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "OpenID با موÙقیت حذ٠گردید."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "یک OpenID اضاÙÙ‡ نمایید"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "یک OpenID را حذ٠نمایید"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "حذ٠نمودن"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenIDها"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "ورود"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "ورود با خطا انجام شد!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "وارد شوید تا یک حساب کاربری ایجاد نمایید!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "یا توسط رمز عبور وارد شوید!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "یا توسط OpenID وارد شوید!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "یا توسط OpenID ثبت‌نام نمایید!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "شرمنده، یک حساب کاربری در حال حاضر توسط آدرس ایمیل مد نظر شما ثبت گردیده است."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "حذ٠یک آدرس ایمیل از سرویس Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "اضاÙÙ‡ کردن یک آدرس ایمیل از سیستم Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "یا توسط Persona وارد شوید!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "یا به وسیله‌ی سیستم Persona ثبت‌نام نمایید!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "ÙØ§ÛŒÙ„ÛŒ نا معتبر برای نوع رسانه داده شده."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Ú©Ù¾ÛŒ به ÙØ¶Ø§ÛŒ ذخیره‌سازی عمومی با شکست مواجه شد."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "یک ÙØ§ÛŒÙ„ قابل قبول جهت پردازش ÛŒØ§ÙØª نشد"
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "ÙØ§ÛŒÙ„"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "شما باید ÙØ§ÛŒÙ„ÛŒ ارايه بدهید."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "هورا!ثبت شد!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "مجموعه‌ی \"%s\" اضاÙÙ‡ گردید!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "آدرس ایمیل خود را تایید نمایید!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "خروج"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "تغییر تنظیمات حساب کاربری"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "پنل رسیدگی به رسانه ها"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "خارج شدن"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "اضاÙÙ‡ کردن ÙØ§ÛŒÙ„"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "یک مجموعه‌ی جدید اضاÙÙ‡ نمایید"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "ÙØ§ÛŒÙ„‌های چندرسانه‌ای جدیدا اضاÙÙ‡ شده"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "اجازه"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "اجازه دادن"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "شما وارد سیستم شده‌اید به عنوان"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "می‌خواهید این اجازه را بدهید"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "یک برنامه‌ی ناشناخته"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "تا به حساب کاربری شما دسترسی داشته باشد؟"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "برنامه‌هایی که به حساب کاربری شما دسترسی دارند می‌توانند:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "یک ÙØ§ÛŒÙ„ چندرسانه‌ای به عنوان خودتان ارسال کنید"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "اطلاعات خود را ببینید (مثلا Ù¾Ø±ÙˆÙØ§ÛŒÙ„ØŒ ÙØ§ÛŒÙ„‌های چندرسانه‌ای Ùˆ ...)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "اطلاعات خود را تغییر دهید"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "مراحل دسترسی دادن به پایان رسید"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "مراحل دسترسی دادن کامل گردید"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "یک نسخه از این بر روی دستگاه خود ایجاد کنید:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "ساخت یک حساب کاربری!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "ساختن"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "سلام %(username)s,\n\nبرای ÙØ¹Ø§Ù„ سازی شناسه کاربری گنو مدیاگوبلین خود ،پیوند زیر را در مرورگر خود باز کنید.\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "منتشر شده تحت مجوز <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">کد منبع</a> در دسترس می‌باشد."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "گشتن"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "سلام رÙیق، به این سایت مدیا گوبلین خوش آمدید!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "این سایت با Ø§Ø³ØªÙØ§Ø¯Ù‡ از سیستم آزاد <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an extraordinarily بنا نهاده شده است Ú©Ù‡ به طور Ø´Ú¯ÙØªâ€ŒØ§Ù†Ú¯ÛŒØ²ÛŒ از بهترین Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÛŒ میزبانی ÙØ§ÛŒÙ„‌های چندرسانه‌ای است."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "برای این Ú©Ù‡ بتوانید ÙØ§ÛŒÙ„ چندرسانه‌ای خود را اضاÙÙ‡ نمایید، نظر بدهید Ùˆ خیلی موارد دیگر می‌توانید با حساب کاربری مدیاگوبلین خود وارد شوید."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "هنوز حساب کاربری ندارید؟ ساختنش آسان است!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "لوگو مدیاگوبلین"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "پیوست‌ها"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "پیوستی اضاÙÙ‡ نمایید"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "انصراÙ"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "ذخیره تغییرات"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "تغییر آدرس ایمیل کاربر %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "ایا مطمئن هستید Ú©Ù‡ می‌خواهید حساب کاربری '%(user_name)s' Ùˆ تمام ÙØ§ÛŒÙ„‌ها Ùˆ نظرات مربوط به ÙˆÛŒ حذ٠گردد؟"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "بله، Ù„Ø·ÙØ§ اکانت من را حذ٠کن"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "به طور کامل حذ٠نمایید"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "ویرایش %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "اکانت من را حذ٠کن"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "آدرس ایمیل"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "در حال ویرایش نمایه %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "نظرات جدید"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "همه را به عنوان خوانده شده نشانه‌گذاری کن"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "نشانه‌گذاری شده با عبارات: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "دانلود"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "اصلی"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "شرمنده، این ÙØ§ÛŒÙ„ صوتی کار نخواهد کرد به دلیل آن Ú©Ù‡ مرورگر وب شما از استاندارد HTML5 جهت پخش ÙØ§ÛŒÙ„‌های صوتی پشتیبانی نمی‌نماید."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "شما می‌توانید یک مرورگر وب بسیار عالی Ú©Ù‡ قادر به پخش ÙØ§ÛŒÙ„‌های صوتی است را از <a href=\"http://getfirefox.com\">\n این‌جا</a> Ø¯Ø±ÛŒØ§ÙØª نمایید!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "ÙØ§ÛŒÙ„ اصلی"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "ÙØ§ÛŒÙ„ WebM (کدک (رمزگشای) Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "ایجاد گردید"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "ÙØ§ÛŒÙ„ PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "جلو"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "بالا"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "کنار"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "حالت دانلود!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "نوع ÙØ§ÛŒÙ„"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "ارتقاع مورد"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "ÙØ§ÛŒÙ„ با ÙØ±Ù…ت WebM (کدک VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "ÙØ§ÛŒÙ„ مورد نظر در حال پردازش می‌باشد"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "هیچ ÙØ§ÛŒÙ„ÛŒ در حال پردازش نیست"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "ÙØ§ÛŒÙ„‌های آپلود شده‌ی زیر نتوانستند پردزاش شوند:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "آخرین ÙØ§ÛŒÙ„‌هایی Ú©Ù‡ با موÙقیت آپلود شده‌اند"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "هنوز هیچ موردی برای پردازش وجود ندارد!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "هیچ کاربری ÛŒØ§ÙØª نشد."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "یک مجموعه اضاÙÙ‡ نمایید"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "ÙØ§ÛŒÙ„ چندرسانه‌ای خود را اضاÙÙ‡ نمایید"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s ایجاد شده توسط <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "ویرایش"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "آیا مطمئن هستید می‌خواهید %(media_title)s را از مجموعه‌ی %(collection_title)s حذ٠نمایید؟"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "حذ٠نمودن"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "مجموعه‌های %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "مجموعه‌های <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "چندرسانه‌ای‌های %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "ÙØ§ÛŒÙ„‌های چند رسانه‌ای کاربر <a href=\"%(user_url)s\">%(username)s</a> با تگ <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s رسانه های"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "یک نظر بنویسید"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "به این مورد نظری بدهید"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "پیش‌نمایش نظر"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "اضاÙÙ‡ گردید"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "“%(media_title)s†را به مجموعه اضاÙÙ‡ Ú©Ù†"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "یک مجموعه‌ی جدید ا ضاÙÙ‡ نمایید"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "شما می‌توانید وضعیت پردازش ÙØ§ÛŒÙ„ چندرسانه‌ای را Ú©Ù‡ به مجموعه‌ی خود اضاÙÙ‡ نموده‌اید را در این‌جا ببینید."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "آخرین Û±Û° ارسال موÙÙ‚ شما"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "نمایه %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "این‌جا مکانی است که شما می‌توانید به دیگران در مورد خود بگویید."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "ویرایش نمایه"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "این کاربر هنوز Ù¾Ø±ÙˆÙØ§ÛŒÙ„ خودر ا پر ننموده است."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "گشتن در مجموعه‌ها"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "نمایش تمامی رسانه های %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "این‌جا مکانی است Ú©Ù‡ ÙØ§ÛŒÙ„‌های شما نمایش داده خواهد شد، اما به نظر می‌رسد Ú©Ù‡ شما هنوز هیچ چیزی را اضاÙÙ‡ ننمودید."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "به نظر می‌رسد Ú©Ù‡ هنوز هیچ ÙØ§ÛŒÙ„ چندرسانه‌ای وجود ندارد..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "تایید ایمیل شما مورد نیاز است"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "تقریبا تمام شد! اکانت شما به ÙØ¹Ø§Ù„ شدن نیاز دارد."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "به زودی ایمیلی حاوی شرح کار ها برای شما ارسال خواهد شد."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "در این حالت وجود ندارد."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "باز ارسال ایمیل تاییدیه"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "شخص دیگری اکانتی با نام انتخابی شما ثبت‌نام نموده است، اما هنوز آن را تایید ننموده است."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "اگر شما آن کاربر هستید Ùˆ ایمیل تایید خود را Ú¯Ù… کرده اید،, Ù…ÛŒ توانید <a href=\"%(login_url)s\">log in</a> Ùˆ دوباره آنرا Ø¨ÙØ±Ø³ØªÛŒØ¯.."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(حذ٠نمودن)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "جمع شده در"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "به مجموعه اضاÙÙ‡ کنید"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "آیکون خوراک (Ùید)"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "خوراک (Ùید) با ÙÙØ±Ù…ت Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "تمامی حقوق محÙوظ است"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "جدیدتر â†"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "→ قدیمی‌تر"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "برو به ØµÙØ­Ù‡â€ŒÛŒ "
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "جدیدتر"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "قدیمی‌تر"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "تگ شده با"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "قادر به خواندن تصویر نمی‌باشد."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "اوه"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "یک خطا رخ داد"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "درخواست نامعتبر"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "درخواست ارائه شده به سرور نادرست است، Ù„Ø·ÙØ§ مجددا Ú†Ú© نمایید"
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "شما اجازه‌ی انجام این عملیات را ندارید"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr ""
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "سال"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "ماه"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "Ù‡ÙØªÙ‡"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "روز"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "ساعت"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "دقیقه"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "نظر"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "من از پاک کردن این مورد کاملا مطمئن هستم"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "من مطمئن هستم که می‌خواهم این مورد را از این مجموعه حذ٠نمایم"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "مجموعه"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- انتخاب کنید --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "یک یادداشت بگذارید"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "دلیل شما برای گزارش؟"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "شرمنده، امکان نظردهی ØºÛŒØ±ÙØ¹Ø§Ù„ گردیده است."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "اووه، متن نظر شما خالی بود."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "نظر شما با موÙقیت ارسال گردید!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Ù„Ø·ÙØ§ مقادیر ورودی خود را بررسی نموده Ùˆ مجددا تلاش نمایید."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "شما مجبور هستید Ú©Ù‡ یک مجموعه را انتخاب یا اضاÙÙ‡ نمایید"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" در حال حاضر در مجموعه‌ی \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" به مجموعه‌ی \"%s\" اضاÙÙ‡ گردیده است"
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "شما چندرسانه‌ای مورد نظر را پاک نمودید."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "این چندرسانه‌ای حذ٠نگردیده است به دلیل آن‌که شما اطمینان خود را تایید ننمودید."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "شما در حال حذ٠نمودن ÙØ§ÛŒÙ„‌های کاربر دیگری است. با احتیاط عمل نمایید."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "شما ÙØ§ÛŒÙ„ مورد نظر را از مجموعه حذ٠نموده‌اید."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "ÙØ§ÛŒÙ„ مورد نظر به دلیل عدم تایید اطمینان شما حذ٠نگردید."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "شما در حال حذ٠نمودن موردی از مجموعه‌ی شخص دیگری هستید، Ù„Ø·ÙØ§ با احتیاط عمل نمایید."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "شما مجموعه‌ی \"%s\" را حذ٠نمودید"
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
diff --git a/mediagoblin/i18n/fa/mediagoblin.po b/mediagoblin/i18n/fa/mediagoblin.po
new file mode 100644
index 00000000..d768b00e
--- /dev/null
+++ b/mediagoblin/i18n/fa/mediagoblin.po
@@ -0,0 +1,2631 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Numb <amir007ag@gmail.com>, 2012
+# b.tavakkoli <b.tavakkoli@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Persian (http://www.transifex.com/projects/p/mediagoblin/language/fa/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ØŒØ«Ø¨ØªÙ†Ø§Ù… به طور موقت غیر ÙØ¹Ø§Ù„ است."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "شرمنده، قابلیت گزارش دادن در این نمونه غیر ÙØ¹Ø§Ù„ است."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "شرمنده، تایید اعتبار در این نمونه ØºÛŒØ±ÙØ¹Ø§Ù„ گردیده است."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "نام کاربری یا آدرس ایمیل وارد شده اشتباه می‌باشد."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "این گزینه بایستی توسط یک ایمیل آدرس تکمیل گردد."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ کاربری با این نام کاربری وجود دارد."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "متاسÙیم، یک کاربر با آدرس ایمیل مورد نظر شما در سیستم ما وجود دارد."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "کلید تایید هویت یا نام کاربری اشتباه است."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "ایمیل شما تایید شد.شما می توانید حالا وارد شوید،نمایه خود را ویرایش کنید و تصاویر خود را ثبت کنید!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "این کد تاییدیه یا شناسه کاربری صحیح نیست."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "شما بایستی وارد سیستم شوید تا ما بدانیم ایمیل را به چه شخصی ارسال نماییم!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "شما در حال حاضر آدرس ایمیل خود را تایید نموده‌اید!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "ایمیل تاییدیه باز ارسال شد."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "عنوان"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "توصی٠این عمل"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "شما می‌توانید از \n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> برای شکل‌دهی به متن Ø§Ø³ØªÙØ§Ø¯Ù‡ نمایید."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "برچسب"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "تگ‌ها را توسط کاما (,) از یک‌دیگر جدا نمایید."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "بخش عنوان آدرس این ÙØ§ÛŒÙ„ چندرسانه‌ای. شما معمولا نیازی به تغییر آن ندارید."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "زندگینامه"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "وبسایت"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "این آدرس شامل موارد غیرمجاز است"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "وقتی دیگران بر روی موارد قرار داده شده توسط من نظر گذاشتند به من ایمیل بزن"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "تنظیمات مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "این مورد مجوز Ø§Ø³ØªÙØ§Ø¯Ù‡â€ŒÛŒ Ù¾ÛŒØ´â€ŒÙØ±Ø¶ شما در ØµÙØ­Ù‡â€ŒÛŒ آپلود خواهد بود."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "عنوان نمی‌تواند خالی باشد"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "معرÙÛŒ این مجموعه"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "بخش عنوان این آدرس مجموعه، شما معمولا نیازی به تغییر این مورد ندارید."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "رمز عبور ÙØ¹Ù„ÛŒ"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "رمز عبور قدیمی خود را وارد نمایید تا تایید نمایید شما صاحب این حساب کاربری هستید."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "رمز عبور جدید"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "آدرس ایمیل جدید"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "گذرواٰژه"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "رمز عبور خود را وارد نمایید تا تایید گردد شما صاحب این حساب کاربری هستید."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "شما در حال ویرایش رسانه کاربر دیگری هستید.با احتیاط عمل کنید"
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "شما Ùقط قادر به ویرایش Ù¾Ø±ÙˆÙØ§ÛŒÙ„ خود می‌باشید."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "شما در حال ویرایش نمایه کاربر دیگری هستید.با احتیاط عمل کنید."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "تغییرات در Ù¾Ø±ÙˆÙØ§ÛŒÙ„ شما ذخیره گردید"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "تنظیمات حساب کاربری شما ذخیره گردید"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "شما نیاز دارید تا حذ٠شدن حساب کاربری خود را تایید نمایید."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "شما در حال حاضر یک مجموعه با نام \"%s\" دارید!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "شما در حال ویرایش مجموعه‌ی شخص دیگری هستید، Ù„Ø·ÙØ§ با احتیاط عمل نمایید."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "آدرس ایمیل شما تایید گردید."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "رمز عبور اشتباه است"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "شرمنده، نوع ÙØ§ÛŒÙ„ چندرسانه‌ای شما قابل پشتیبانی نیست :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "توضیح"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "من از پاک کردن این مورد کاملا مطمئن هستم"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "هورا!ثبت شد!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "این چندرسانه‌ای حذ٠نگردیده است به دلیل آن‌که شما اطمینان خود را تایید ننمودید."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "ویرایش"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "حذ٠نمودن"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "انصراÙ"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "به طور کامل حذ٠نمایید"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "اضاÙÙ‡ نمودن"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "این حساب کاربری را ببند"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "یک پیغام برای این کاربر Ø¨ÙØ±Ø³ØªÛŒØ¯"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "محتوا را حذ٠کن"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "این حساب کاربری تا این زمان بسته باشد:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "چرا شما این حساب کاربری را می‌بندید؟"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "بر روی ارسال شما نظری گذاشته است"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "شما اعلانات مربوط به نظرات جدید در %s را Ø¯Ø±ÛŒØ§ÙØª نخواهید کرد."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "رشته‌ی تایید هویت درخواستی ÛŒØ§ÙØª نگردید."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "ÙØ§ÛŒÙ„‌های چندرسانه‌ای جدیدا اضاÙÙ‡ شده"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "نام کاربری"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "آدرس ایمیل"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "نام کاربری یا آدرس ایمیل"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "مرا به خاطر داشته باش"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "نام کاربری یا آدرس ایمیل"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "سیستم قادر به ÛŒØ§ÙØªÙ† شخصی با نام کاربری ارائه شده نمی باشد."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "یک ایمیل که نحوه‌ی تغییر رمز عبور شما را شرح داده است، ارسال گردید."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "سیستم نمی‌تواند ایمیل بازیابی رمز عبور شما را ارسال نماید، به دلیل آن‌که نام کاربری شما ÙØ¹Ø§Ù„ نیست یا ایمیلی Ú©Ù‡ با آن ثبت‌نام نموده‌اید هنوز تایید نشده است."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "نام کاربری اشتباه است."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "شما هم‌اکنون می‌توانید با رمز عبور جدید خود وارد سیستم گردید."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "حساب کاربری شما دیگر ÙØ¹Ø§Ù„ نیست. Ù„Ø·ÙØ§ با مدیر سیستم جهت ÙØ¹Ø§Ù„‌سازی حساب کاربری خود تماس بگیرید."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "رمز عبور شما با موÙقیت تغییر ÛŒØ§ÙØª"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "رمز عبور جدید خود را تنظیم نمایید"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "رمز عبور خود را تنظیم نمایید"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "تغییر رمز عبور کاربر %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "ذخیره"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "آیا حساب کاربری ندارید؟"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "در اینجا یکی بسازید!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "بازیابی رمز عبور"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "ارسال دستورالعمل"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "رمز عبور خود را ÙØ±Ø§Ù…وش نموده‌اید؟"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "بر روی <a href=\"%(osm_url)s\">OpenStreetMap</a> ببنید"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "اجازه"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "منع"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "نام"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "نام در کلاینت OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "نوع"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "آدرس بازگشت"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "شرمنده، یک حساب کاربری در حال حاضر با OpenID مد نظر شما ثبت گردیده است."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "شرمنده، سرور OpenID نمی‌تواند ÛŒØ§ÙØª شود"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "خدمات OpenID برای %s ÛŒØ§ÙØª نگردید."
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "تایید %s با شکست روبرو گردید: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "درخواست تایید لغو گردید"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "آدرس OpenID شما با موÙقیت ذخیره گردید."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "شما نمی‌توانید تنها آدرس OpenID خود را تا زمانی که رمز عبوری برای آن تنظیم نموده‌اید، حذ٠نمایید"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "OpenID مد نظر شما برای این حساب کاربری ثبت نگردیده است."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "OpenID با موÙقیت حذ٠گردید."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "یک OpenID اضاÙÙ‡ نمایید"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "یک OpenID را حذ٠نمایید"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenIDها"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "ورود"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "ورود با خطا انجام شد!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "وارد شوید تا یک حساب کاربری ایجاد نمایید!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "یا توسط رمز عبور وارد شوید!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "یا توسط OpenID وارد شوید!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "یا توسط OpenID ثبت‌نام نمایید!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "شرمنده، یک حساب کاربری در حال حاضر توسط آدرس ایمیل مد نظر شما ثبت گردیده است."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "حذ٠یک آدرس ایمیل از سرویس Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "اضاÙÙ‡ کردن یک آدرس ایمیل از سیستم Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "یا توسط Persona وارد شوید!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "یا به وسیله‌ی سیستم Persona ثبت‌نام نمایید!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "ÙØ§ÛŒÙ„ÛŒ نا معتبر برای نوع رسانه داده شده."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Ú©Ù¾ÛŒ به ÙØ¶Ø§ÛŒ ذخیره‌سازی عمومی با شکست مواجه شد."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "یک ÙØ§ÛŒÙ„ قابل قبول جهت پردازش ÛŒØ§ÙØª نشد"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "ÙØ§ÛŒÙ„"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "شما باید ÙØ§ÛŒÙ„ÛŒ ارايه بدهید."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "مجموعه‌ی \"%s\" اضاÙÙ‡ گردید!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "آدرس ایمیل خود را تایید نمایید!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "خروج"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "تغییر تنظیمات حساب کاربری"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "پنل رسیدگی به رسانه ها"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "خارج شدن"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "اضاÙÙ‡ کردن ÙØ§ÛŒÙ„"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "یک مجموعه‌ی جدید اضاÙÙ‡ نمایید"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "اجازه"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "اجازه دادن"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "شما وارد سیستم شده‌اید به عنوان"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "می‌خواهید این اجازه را بدهید"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "یک برنامه‌ی ناشناخته"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "تا به حساب کاربری شما دسترسی داشته باشد؟"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "برنامه‌هایی که به حساب کاربری شما دسترسی دارند می‌توانند:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "یک ÙØ§ÛŒÙ„ چندرسانه‌ای به عنوان خودتان ارسال کنید"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "اطلاعات خود را ببینید (مثلا Ù¾Ø±ÙˆÙØ§ÛŒÙ„ØŒ ÙØ§ÛŒÙ„‌های چندرسانه‌ای Ùˆ ...)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "اطلاعات خود را تغییر دهید"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "مراحل دسترسی دادن به پایان رسید"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "مراحل دسترسی دادن کامل گردید"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "ساخت یک حساب کاربری!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "ساختن"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "سلام %(username)s,\n\nبرای ÙØ¹Ø§Ù„ سازی شناسه کاربری گنو مدیاگوبلین خود ،پیوند زیر را در مرورگر خود باز کنید.\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "منتشر شده تحت مجوز <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">کد منبع</a> در دسترس می‌باشد."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "گشتن"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "سلام رÙیق، به این سایت مدیا گوبلین خوش آمدید!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "این سایت با Ø§Ø³ØªÙØ§Ø¯Ù‡ از سیستم آزاد <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an extraordinarily بنا نهاده شده است Ú©Ù‡ به طور Ø´Ú¯ÙØªâ€ŒØ§Ù†Ú¯ÛŒØ²ÛŒ از بهترین Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÛŒ میزبانی ÙØ§ÛŒÙ„‌های چندرسانه‌ای است."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "برای این Ú©Ù‡ بتوانید ÙØ§ÛŒÙ„ چندرسانه‌ای خود را اضاÙÙ‡ نمایید، نظر بدهید Ùˆ خیلی موارد دیگر می‌توانید با حساب کاربری مدیاگوبلین خود وارد شوید."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "هنوز حساب کاربری ندارید؟ ساختنش آسان است!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "لوگو مدیاگوبلین"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "پیوست‌ها"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "پیوستی اضاÙÙ‡ نمایید"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "ذخیره تغییرات"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "تغییر آدرس ایمیل کاربر %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "ایا مطمئن هستید Ú©Ù‡ می‌خواهید حساب کاربری '%(user_name)s' Ùˆ تمام ÙØ§ÛŒÙ„‌ها Ùˆ نظرات مربوط به ÙˆÛŒ حذ٠گردد؟"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "بله، Ù„Ø·ÙØ§ اکانت من را حذ٠کن"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "ویرایش %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "اکانت من را حذ٠کن"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "آدرس ایمیل"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "در حال ویرایش نمایه %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "نظرات جدید"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "همه را به عنوان خوانده شده نشانه‌گذاری کن"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "نشانه‌گذاری شده با عبارات: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "دانلود"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "اصلی"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "ÙØ§ÛŒÙ„ اصلی"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "ÙØ§ÛŒÙ„ WebM (کدک (رمزگشای) Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "ایجاد گردید"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "ÙØ§ÛŒÙ„ PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "جلو"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "بالا"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "کنار"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "حالت دانلود!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "نوع ÙØ§ÛŒÙ„"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "ارتقاع مورد"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "ÙØ§ÛŒÙ„ با ÙØ±Ù…ت WebM (کدک VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "ÙØ§ÛŒÙ„ مورد نظر در حال پردازش می‌باشد"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "هیچ ÙØ§ÛŒÙ„ÛŒ در حال پردازش نیست"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "ÙØ§ÛŒÙ„‌های آپلود شده‌ی زیر نتوانستند پردزاش شوند:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "آخرین ÙØ§ÛŒÙ„‌هایی Ú©Ù‡ با موÙقیت آپلود شده‌اند"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "هنوز هیچ موردی برای پردازش وجود ندارد!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "تایید ایمیل شما مورد نیاز است"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "نمایه %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "این کاربر هنوز Ù¾Ø±ÙˆÙØ§ÛŒÙ„ خودر ا پر ننموده است."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "ویرایش نمایه"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "گشتن در مجموعه‌ها"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "هیچ کاربری ÛŒØ§ÙØª نشد."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "یک مجموعه اضاÙÙ‡ نمایید"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "ÙØ§ÛŒÙ„ چندرسانه‌ای خود را اضاÙÙ‡ نمایید"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "یک نظر بنویسید"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "به این مورد نظری بدهید"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "اضاÙÙ‡ گردید"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s ایجاد شده توسط <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "آیا مطمئن هستید می‌خواهید %(media_title)s را از مجموعه‌ی %(collection_title)s حذ٠نمایید؟"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "حذ٠نمودن"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "مجموعه‌های %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "مجموعه‌های <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "چندرسانه‌ای‌های %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "ÙØ§ÛŒÙ„‌های چند رسانه‌ای کاربر <a href=\"%(user_url)s\">%(username)s</a> با تگ <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s رسانه های"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "پیش‌نمایش نظر"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "“%(media_title)s†را به مجموعه اضاÙÙ‡ Ú©Ù†"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "یک مجموعه‌ی جدید ا ضاÙÙ‡ نمایید"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "شما می‌توانید وضعیت پردازش ÙØ§ÛŒÙ„ چندرسانه‌ای را Ú©Ù‡ به مجموعه‌ی خود اضاÙÙ‡ نموده‌اید را در این‌جا ببینید."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "آخرین Û±Û° ارسال موÙÙ‚ شما"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "این‌جا مکانی است که شما می‌توانید به دیگران در مورد خود بگویید."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "نمایش تمامی رسانه های %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "این‌جا مکانی است Ú©Ù‡ ÙØ§ÛŒÙ„‌های شما نمایش داده خواهد شد، اما به نظر می‌رسد Ú©Ù‡ شما هنوز هیچ چیزی را اضاÙÙ‡ ننمودید."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "به نظر می‌رسد Ú©Ù‡ هنوز هیچ ÙØ§ÛŒÙ„ چندرسانه‌ای وجود ندارد..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "تقریبا تمام شد! اکانت شما به ÙØ¹Ø§Ù„ شدن نیاز دارد."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "به زودی ایمیلی حاوی شرح کار ها برای شما ارسال خواهد شد."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "در این حالت وجود ندارد."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "باز ارسال ایمیل تاییدیه"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "شخص دیگری اکانتی با نام انتخابی شما ثبت‌نام نموده است، اما هنوز آن را تایید ننموده است."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "اگر شما آن کاربر هستید Ùˆ ایمیل تایید خود را Ú¯Ù… کرده اید،, Ù…ÛŒ توانید <a href=\"%(login_url)s\">log in</a> Ùˆ دوباره آنرا Ø¨ÙØ±Ø³ØªÛŒØ¯.."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(حذ٠نمودن)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "جمع شده در"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "به مجموعه اضاÙÙ‡ کنید"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "آیکون خوراک (Ùید)"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "خوراک (Ùید) با ÙÙØ±Ù…ت Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "تمامی حقوق محÙوظ است"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "جدیدتر â†"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "→ قدیمی‌تر"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "برو به ØµÙØ­Ù‡â€ŒÛŒ "
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "جدیدتر"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "قدیمی‌تر"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "محل"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "تگ شده با"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "قادر به خواندن تصویر نمی‌باشد."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "اوه"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "یک خطا رخ داد"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "درخواست نامعتبر"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "درخواست ارائه شده به سرور نادرست است، Ù„Ø·ÙØ§ مجددا Ú†Ú© نمایید"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "شما اجازه‌ی انجام این عملیات را ندارید"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "سال"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "ماه"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "Ù‡ÙØªÙ‡"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "روز"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "ساعت"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "دقیقه"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "نظر"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "من مطمئن هستم که می‌خواهم این مورد را از این مجموعه حذ٠نمایم"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "مجموعه"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- انتخاب کنید --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "یک یادداشت بگذارید"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "دلیل شما برای گزارش؟"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "شرمنده، امکان نظردهی ØºÛŒØ±ÙØ¹Ø§Ù„ گردیده است."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "اووه، متن نظر شما خالی بود."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "نظر شما با موÙقیت ارسال گردید!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Ù„Ø·ÙØ§ مقادیر ورودی خود را بررسی نموده Ùˆ مجددا تلاش نمایید."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "شما مجبور هستید Ú©Ù‡ یک مجموعه را انتخاب یا اضاÙÙ‡ نمایید"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" در حال حاضر در مجموعه‌ی \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" به مجموعه‌ی \"%s\" اضاÙÙ‡ گردیده است"
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "شما چندرسانه‌ای مورد نظر را پاک نمودید."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "شما در حال حذ٠نمودن ÙØ§ÛŒÙ„‌های کاربر دیگری است. با احتیاط عمل نمایید."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "شما ÙØ§ÛŒÙ„ مورد نظر را از مجموعه حذ٠نموده‌اید."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "ÙØ§ÛŒÙ„ مورد نظر به دلیل عدم تایید اطمینان شما حذ٠نگردید."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "شما در حال حذ٠نمودن موردی از مجموعه‌ی شخص دیگری هستید، Ù„Ø·ÙØ§ با احتیاط عمل نمایید."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "شما مجموعه‌ی \"%s\" را حذ٠نمودید"
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/fa_IR/mediagoblin.po b/mediagoblin/i18n/fa_IR/mediagoblin.po
new file mode 100644
index 00000000..896499c3
--- /dev/null
+++ b/mediagoblin/i18n/fa_IR/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/mediagoblin/language/fa_IR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: fa_IR\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/fi/mediagoblin.po b/mediagoblin/i18n/fi/mediagoblin.po
new file mode 100644
index 00000000..12e02675
--- /dev/null
+++ b/mediagoblin/i18n/fi/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Finnish (http://www.transifex.com/projects/p/mediagoblin/language/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index f74ae97a..00000000
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fr/mediagoblin.po
index 022ef84c..0271210d 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fr/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,256 +8,395 @@
# chesuidayeur <chesuidayeur@yahoo.fr>, 2011
# Bibit <crash_bibit@hotmail.com>, 2013
# Fubik, 2013
+# gnujeremie <jeremie@gnujeremie.net>, 2014
# joehillen <joehillen@gmail.com>, 2011
# Laurent Pointecouteau <hell_pe@no-log.org>, 2013
# loic_le.ninan, 2014
# MarkTraceur <marktraceur@gmail.com>, 2011
+# Mathieu Gauthier-Pilote <mathieu.g.p@republiquelibre.org>, 2015
# maxineb <maxineb@members.fsf.org>, 2011
+# Nathan Follens, 2015
+# spechard <sd@s13d.fr>, 2014
+# syl_, 2014
# joar <transifex@wandborg.se>, 2011
# Valentin Villenave <valentin@villenave.net>, 2011
+# buridan <paul.lett@free.fr>, 2015.
+# postblue <postblue+gnu@postblue.info>, 2016.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-06-17 21:15+0000\n"
-"Last-Translator: loic_le.ninan\n"
-"Language-Team: French (http://www.transifex.com/projects/p/mediagoblin/language/fr/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2016-01-11 16:16+0000\n"
+"Last-Translator: postblue <postblue+gnu@postblue.info>\n"
+"Language-Team: French "
+"(http://www.transifex.com/projects/p/mediagoblin/language/fr/)\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1452529008.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Désolé, l'inscription n'est pas activée sur ce serveur."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr "Désolé, le signalement est désactivé sur ce serveur. "
+msgstr "Désolé, le signalement est désactivé sur ce serveur."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "Désolé, l'authentification est désactivée sur ce serveur."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Nom d'utilisateur ou adresse e-mail invalide."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Ce champ n'accepte pas les adresses e-mail."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Ce champ nécessite une adresse e-mail."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Désolé, un autre utilisateur utilise déjà ce nom."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Désolé, un autre utilisateur se sert déjà de cette adresse e-mail."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "La clé de vérification ou l'identifiant de l'utilisateur est incorrect."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Votre adresse e-mail a été vérifiée. Vous pouvez maintenant vous identifier, renseigner votre profil, et ajouter des images !"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
-msgstr "La clé de vérification ou le nom d'utilisateur est incorrect."
+msgstr "La clé de vérification ou le nom d'utilisateur est incorrect"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Vous devez être identifié afin que nous sachions à qui envoyer l'e-mail !"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Votre adresse e-mail a déjà été vérifiée !"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "E-mail de vérification renvoyé."
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} a ajouté {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} a ajouté {object} à {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} est l'auteur de {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} a créé {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} a supprimé {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} a détesté {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} a enregistré {object} comme favori"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} a suivi {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} a aimé {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} a publié {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} a publié {object} dans {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} a partagé {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} a retiré {object} de ses favoris"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} a arrêté de suivre {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} n'aime plus {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} ne partage plus {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} a mis à jour {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} a marqué {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "une image"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "un commentaire"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "une collection"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "une vidéo"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "une personne"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "un objet"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titre"
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
msgid "Description of this work"
msgstr "Description de ce média"
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr "Vous pouvez utiliser\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> pour la mise en page."
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
msgid "Tags"
msgstr "Mots-clés"
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
msgstr "Séparez les mots-clés avec des virgules."
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Référence"
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
-msgstr "La référence doit être renseignée."
+msgstr "La référence doit être renseignée"
-#: mediagoblin/edit/forms.py:42
+#: mediagoblin/edit/forms.py:44
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr "Le texte utilisé dans l'URL de ce média. Vous n'avez généralement pas besoin de le modifier. "
+msgstr ""
+"Le texte utilisé dans l'URL de ce média. Vous n'avez généralement pas besoin "
+"de le modifier."
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
msgstr "Licence"
-#: mediagoblin/edit/forms.py:52
+#: mediagoblin/edit/forms.py:54
msgid "Bio"
msgstr "Biographie"
-#: mediagoblin/edit/forms.py:58
+#: mediagoblin/edit/forms.py:60
msgid "Website"
msgstr "Site web"
-#: mediagoblin/edit/forms.py:60
+#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
msgstr "Cette adresse contient des erreurs"
-#: mediagoblin/edit/forms.py:65
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Lieu de naissance"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Me prévenir par e-mail lorsqu'on commente mes médias"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Activer les notifications d'évènements sur le site."
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Préférence de licence"
-#: mediagoblin/edit/forms.py:75
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Cette licence sera sélectionnée par défaut lors de vos ajouts de médias."
-#: mediagoblin/edit/forms.py:88
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Le titre doit être renseigné"
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Description de cette collection"
-#: mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Le texte utilisé dans l'URL de cette collection. Vous n'avez généralement pas besoin de le modifier."
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Ancien mot de passe"
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Entrez votre ancien mot de passe pour prouver que vous êtes bien le propriétaire de ce compte."
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Nouveau mot de passe"
-#: mediagoblin/edit/forms.py:117
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Nouvelle adresse e-mail"
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Mot de passe"
-#: mediagoblin/edit/forms.py:123
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Entrez votre mot de passe pour prouver que vous êtes bien le propriétaire de ce compte."
-#: mediagoblin/edit/views.py:73
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identifiant"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Valeur"
+
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Un média portant la même référence existe déjà pour cet utilisateur."
-#: mediagoblin/edit/views.py:91
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Vous vous apprêtez à modifier le média d'un autre utilisateur. Veuillez prendre garde."
-#: mediagoblin/edit/views.py:161
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Vous avez ajouté la pièce jointe “%s†!"
-#: mediagoblin/edit/views.py:188
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Vous ne pouvez modifier que votre propre profil."
-#: mediagoblin/edit/views.py:194
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Vous vous apprêtez à modifier le profil d'un utilisateur. Veuillez prendre garde."
-#: mediagoblin/edit/views.py:210
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Les modifications du profil ont été enregistrées"
-#: mediagoblin/edit/views.py:243
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Les préférences du compte ont été enregistrées"
-#: mediagoblin/edit/views.py:277
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Application inconnue, incapable d'annuler l'autorisation"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "L'application n'est plus autorisée"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Vous devez confirmer la suppression de votre compte."
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Vous possédez déjà une collection intitulée “%s†!"
-#: mediagoblin/edit/views.py:317
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Une collection portant la même référence existe déjà pour cet utilisateur."
-#: mediagoblin/edit/views.py:332
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Vous vous apprêtez à modifier la collection d'un autre utilisateur. Veuillez prendre garde."
-#: mediagoblin/edit/views.py:373
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Votre adresse e-mail a été vérifiée."
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Mauvais mot de passe"
@@ -288,6 +427,75 @@ msgstr "Saute \"%s\"; déjà défini.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Ancien lien trouvé pour \"%s\"; suppression.\n"
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Pour plus d'informations sur la manière de lancer ce script\n(et comment formater le fichier csv), lisez la documentation\nde Mediagoblin sur l'upload en ligne de commande.\n <http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Utilisateur à qui appartiennent ces médias"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Chemin vers le fichier CSV contenant les métadonnées."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "Ne pas traiter avec impatience, passer à celery"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Désolé, il n'existe pas d'utilisateur '{username}'"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Impossible trouver le fichier {path}, utiliser l'option -h pour de l'aide"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+"Erreur avec le média '{media_id}'valeur'{error_path}': {error_msg}\n"
+"Les métadonnées n'ont pas été téléversé."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "ÉCHEC : Le fichier {filename} n'a pas pu être trouvé.\n{filename} ne sera pas uploadé."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+"{filename} soumis avec succès !\n"
+"Regarder le panneau de traitement des médias pour vérifier qu'il a "
+"correctement\n"
+"été téléchargé."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "ÉCHEC : Ce fichier est plus grand que la taille autorisée pour ce site."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "ÉCHEC : Ce fichier ferait excéder la limite d'upload de l'utilisateur."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "ÉCHEC : Cet utilisateur a déjà dépassé sa limite d'upload."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} fichiers sur {files_attempted} ont été soumis correctement"
+
#: mediagoblin/meddleware/csrf.py:134
msgid ""
"CSRF cookie not present. This is most likely the result of a cookie blocker "
@@ -295,11 +503,147 @@ msgid ""
"domain."
msgstr "Cookie CSRF non présent. Cela est vraisemblablement l’œuvre d'un bloqueur de cookies ou assimilé.<br/>Veuillez vous assurer d'autoriser les cookies pour ce domaine."
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
msgstr "Désolé, mais je ne prends pas en charge ce type de fichier :("
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Description"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Je suis sûr de vouloir supprimer ce média"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Youhou, c'est envoyé !"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Woohoo! L'article de blog édité a été soumis"
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Vous avez effacé le blog."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Ce média n'a pas été supprimé car vous n'avez pas coché la case de confirmation. "
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Vous êtes sur le point de supprimer le blogue d'un autre utilisateur. Soyez prudent."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Le blogue n'a pas été supprimé car vous ne disposez pas du privilège de le faire."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Ajouter un article au blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Éditer le blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Effacer le blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Modifier"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Supprimer"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Passer au mode liste </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Aucun article pour le moment"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Voulez-vous vraiment supprimer “%(title)s†?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Annuler"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Supprimer définitivement"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Créer/Éditer un blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Ajouter"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Créer/Éditer un article du blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Créer/Éditer un article du blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Blog de %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Vue"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Créer un blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr "Tableau de bord du blog"
+
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
msgstr "unoconv n'arrive pas à s'exécuter, vérifiez le fichier log"
@@ -340,7 +684,58 @@ msgstr "Quelle action envisagez-vous pour ce signalement ? "
msgid "What privileges will you take away?"
msgstr "Quels privilèges souhaitez-vous révoquer ? "
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Raison du bannissement de l'utilisateur:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Message à l'utilisateur:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Contenu de la résolution:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} a retiré les privilèges {privilege} de {user}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} a banni l'utilisateur {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "jusqu'au {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "à perpétuité"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} a envoyé un email d'avertissement à {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} a supprimé le commentaire."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} a supprimé le media."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Avertissement de"
@@ -362,25 +757,271 @@ msgstr "Vous ne serez pas notifié pour les commentaires sur “%sâ€."
msgid "Must provide an oauth_token."
msgstr "Doit fournir un oauth_token."
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "Aucun jeton d'authentification n'a été trouvé dans la requête. "
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "Désolé, la taille du fichier est trop importante. "
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "Désolé, publier ce fichier vous fera dépasser votre limite d'ajout de médias. "
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "Désolé, vous avez atteint votre limite d'ajout de médias. "
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Saisissez l'adresse (URL) du média à mettre en avant-plan"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "Primaire"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Secondaire"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Tertiaire"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-Fonctionalités---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Comment cela fonctionne-t-il ?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Comment mettre un média à l'avant-plan?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+"\n"
+" Allez à la page du média que vous voulez mettre en avant. Copiez son "
+"URL et\n"
+" collez la dans une nouvelle ligne dans la boîte de texte ci-dessus. Il "
+"doit n'y avoir\n"
+" qu'un seule URL par ligne. L'URL que vous collez dans la boîte de "
+"texte devrait être\n"
+" sous l'entête décrivant son importance (qu'elle soit Primaire, "
+"Secondaire ou\n"
+" Tertiaire). Une fois que tous les médias que vous voulez mettre en "
+"avant sont\n"
+" dans la boîte de texte, cliquez sur le bouton Soumettre la requête, et "
+"votre média\n"
+" devrait apparaître en première page.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "ATTENTION :"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Derniers médias"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
#: mediagoblin/plugins/persona/forms.py:24
@@ -491,11 +1132,7 @@ msgstr "Envoyer les instructions"
msgid "Forgot your password?"
msgstr "Vous avez oublié votre mot de passe ?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Emplacement"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Localiser avec <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -504,6 +1141,14 @@ msgstr "Localiser avec <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgid "Sign in to create an account!"
msgstr "Identifiez-vous pour créer un compte ! "
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Métadonnées"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Modifier les métadonnées"
+
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Autoriser"
@@ -520,10 +1165,6 @@ msgstr "Nom"
msgid "The name of the OAuth client"
msgstr "Le nom du client OAuth"
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Description"
-
#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
@@ -558,7 +1199,7 @@ msgstr "L'URI de redirection pour l'application, ce champ est <strong>obligatoir
msgid "This field is required for public clients"
msgstr "Ce champ est obligatoire pour les clients publics"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Le client {0} a été enregistré !"
@@ -570,17 +1211,9 @@ msgstr "Connexions de clients OAuth"
msgid "Your OAuth clients"
msgstr "Vos clients OAuth"
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Ajouter"
-
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Désolé, un compte est déjà enregistré avec cet OpenID."
@@ -588,39 +1221,39 @@ msgstr "Désolé, un compte est déjà enregistré avec cet OpenID."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Désolé, le serveur OpenID n'a pas pu être trouvé."
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Aucun service OpenID n'a été trouvé pour %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "La vérification de %s a échoué : %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Vérification annulée"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Votre url OpenID a été correctement enregistrée."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "Vous ne pouvez pas supprimer votre seul URL OpenID sauf si vous avez défini un mot de passe"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Cet OpenID n'est pas lié à ce compte."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID a été retiré avec succès."
@@ -637,13 +1270,6 @@ msgstr "Ajouter un OpenID"
msgid "Delete an OpenID"
msgstr "Supprimer un OpenID"
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Supprimer"
-
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
msgid "OpenID's"
msgstr "OpenID"
@@ -651,7 +1277,7 @@ msgstr "OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -683,26 +1309,26 @@ msgstr "Ou s'enregistrer avec OpenID !"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Désolé, un compte est déjà enregistré avec cet e-mail Persona."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "L'adresse e-mail Persona a été retirée avec succès."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "Vous ne pouvez pas supprimer votre seul e-mail Persona sauf si vous avez défini un mot de passe."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Cette adresse e-mail Persona n'est pas liée à ce compte."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "Désolé, un compte est déjà enregistré avec cette adresse e-mail Persona."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Votre adresse e-mail Persona a été enregistrée avec succès."
@@ -726,15 +1352,15 @@ msgstr "Ou s'identifier avec Persona !"
msgid "Or register with Persona!"
msgstr "Ou s'enregistrer avec Persona !"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Le fichier envoyé ne correspond pas au type de média."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "La copie vers le stockage public a échoué."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "Aucun fichier pouvant être traité n'a été trouvé"
@@ -753,15 +1379,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "Vous pouvez utiliser \n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> pour la mise en page."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Vous devez fournir un fichier."
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Youhou, c'est envoyé !"
-
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Collection “%s†ajoutée !"
@@ -784,30 +1406,26 @@ msgstr "Vous avez été banni"
msgid "until %(until_when)s"
msgstr "jusqu'au %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "à perpétuité"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Vérifiez votre adresse e-mail !"
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "se déconnecter"
-#: mediagoblin/templates/mediagoblin/base.html:115
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Compte de <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Modifier les préférences du compte"
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -815,32 +1433,32 @@ msgstr "Modifier les préférences du compte"
msgid "Media processing panel"
msgstr "Panneau de traitement des médias"
-#: mediagoblin/templates/mediagoblin/base.html:135
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Se déconnecter"
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Ajouter des médias"
-#: mediagoblin/templates/mediagoblin/base.html:141
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Créer une nouvelle collection"
-#: mediagoblin/templates/mediagoblin/base.html:151
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Panneau de gestion des utilisateurs"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Panneau de gestion des signalements"
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Tout derniers médias"
-
#: mediagoblin/templates/mediagoblin/api/authorize.html:21
msgid "Authorization"
msgstr "Autorisation"
@@ -891,8 +1509,8 @@ msgid "Authorization Complete"
msgstr "Autorisation terminée"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copiez-collez ceci dans votre client :"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -937,38 +1555,38 @@ msgstr "Conditions d'utilisation"
msgid "Explore"
msgstr "Explorer"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Bonjour, et bienvenue sur ce site MediaGoblin !"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Ce site utilise <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un logiciel de partage de média particulièrement génial."
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Pour ajouter vos propres médias, commenter, et bien plus encore, vous pouvez vous identifier avec votre compte MediaGoblin. "
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
msgstr "Vous n'en avez pas ? C'est facile !"
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
msgid ""
"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n>Créer un compte sur ce site</a>\nou"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Installer MediaGoblin sur votre propre serveur</a>"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -982,27 +1600,16 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Modification des pièces jointes de “%(media_title)sâ€"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Pièces jointes"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Ajouter une pièce jointe"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Annuler"
-
#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
@@ -1017,6 +1624,47 @@ msgstr "Enregistrer les modifications"
msgid "Changing %(username)s's email"
msgstr "Changement de l'adresse e-mail de %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "Il y a %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1026,12 +1674,6 @@ msgstr "Voulez-vous vraiment supprimer l'utilisateur “%(user_name)s†et tous
msgid "Yes, really delete my account"
msgstr "Oui, supprimer réellement mon compte"
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Supprimer définitivement"
-
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -1048,7 +1690,7 @@ msgstr "Modification des préférences du compte de %(username)s"
msgid "Delete my account"
msgstr "Supprimer mon compte"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "E-mail"
@@ -1063,6 +1705,27 @@ msgstr "Modification de “%(collection_title)sâ€"
msgid "Editing %(username)s's profile"
msgstr "Modification du profil de %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Métadonnées pour \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Métadonnées"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Mettre à jour les métadonnées"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
msgid ""
@@ -1081,17 +1744,6 @@ msgstr "Bonjour,\n\nNous voulons vérifier que vous êtes %(username)s. Si cela
msgid "New comments"
msgstr "Nouveaux commentaires"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "Il y a %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Tout marquer comme lu"
@@ -1104,38 +1756,38 @@ msgstr "Tout marquer comme lu"
msgid "Media tagged with: %(tag_name)s"
msgstr "Médias étiquetés avec : %(tag_name)s "
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Télécharger"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Désolé, ce fichier sonore ne sera pas joué car \n\tvotre navigateur web ne prend pas en charge \n\tle son au standard HTML5."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Vous pouvez obtenir un navigateur web à jour \n\tcapable de jouer les sons sur <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a> !"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Fichier original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "Fichier WebM (codec Vorbis)"
@@ -1143,68 +1795,70 @@ msgstr "Fichier WebM (codec Vorbis)"
msgid "Created"
msgstr "Créé"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Image de “%(media_title)sâ€"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "Fichier PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspective"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "De face"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Haut"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Côté"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Télécharger le modèle"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Format de fichier"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Hauteur de l'objet"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Désolé, ce fichier vidéo ne sera pas lu car\n votre navigateur web ne prend pas en charge \n la vidéo au standard HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Vous pouvez obtenir un navigateur web à jour \n capable de lire les vidéos sur <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a> !"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "Fichier WebM (VP8/Vorbis)"
@@ -1218,6 +1872,32 @@ msgstr "Ici, vous pouvez suivre la progression des médias en cours de traitemen
msgid "Media in-processing"
msgstr "Médias en cours de traitement"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1228,6 +1908,14 @@ msgstr "Aucun média en cours de traitement"
msgid "These uploads failed to process:"
msgstr "Le traitement de ces fichiers a échoué :"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1237,6 +1925,10 @@ msgstr "Aucun échec !"
msgid "Last 10 successful uploads"
msgstr "10 derniers médias traités avec succès"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1246,20 +1938,20 @@ msgstr "Aucun média traité, pour le moment !"
msgid "Sorry, no such report found."
msgstr "Désolé, ce signalement n'a pas été trouvé. "
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
msgid "Return to Reports Panel"
msgstr "Retourner au Panneau des signalements"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Signalement"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
msgid "Reported comment"
msgstr "Commentaire signalé"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
#, python-format
msgid ""
"\n"
@@ -1267,7 +1959,7 @@ msgid ""
" "
msgstr "\n ■Média signalé par <a href=\"%(user_url)s\">%(user_name)s</a>\n "
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
#, python-format
msgid ""
"\n"
@@ -1277,24 +1969,29 @@ msgid ""
" "
msgstr "\nLE CONTENU PUBLIE PAR\n<a href=\"%(user_url)s\"> %(user_name)s</a>\nA ETE SUPPRIME"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
msgstr "Résoudre"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
msgid "Resolve This Report"
msgstr "Résoudre ce signalement"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
msgid "Status"
msgstr "Statut"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
msgstr "RESOLU"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
msgid "You cannot take action against an administrator"
msgstr "Vous ne pouvez pas agir contre un administrateur"
@@ -1315,7 +2012,7 @@ msgid "Active Reports Filed"
msgstr "Signalements actifs"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
msgid "Offender"
msgstr "Utilisateur mis en cause"
@@ -1324,16 +2021,16 @@ msgid "When Reported"
msgstr "Signalé le"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
msgid "Reported By"
msgstr "Signalé par"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
msgid "Reason"
msgstr "Raison"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
#, python-format
msgid ""
"\n"
@@ -1341,7 +2038,7 @@ msgid ""
" "
msgstr "\n Signalement de commentaire #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
#, python-format
msgid ""
"\n"
@@ -1349,23 +2046,23 @@ msgid ""
" "
msgstr "\n Signalement de média #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
msgid "No open reports found."
msgstr "Aucun signalement en attente de résolution n'a été trouvé. "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
msgid "Closed Reports"
msgstr "Signalements résolus"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
msgid "Resolved"
msgstr "Résolu"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
msgid "Action Taken"
msgstr "Action réalisée"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
#, python-format
msgid ""
"\n"
@@ -1373,10 +2070,142 @@ msgid ""
" "
msgstr "\n Signalement résolu #%(report_id)s\n "
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
msgid "No closed reports found."
msgstr "Aucun signalement résolu n'a été trouvé. "
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Vérification d'e-mail nécessaire"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Cet utilisateur n'a pas (encore) renseigné son profil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Modifier le profil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Parcourir les collections"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Oui"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Non"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
msgid "User panel"
@@ -1393,10 +2222,6 @@ msgstr "\n Ici vous pouvez superviser les utilisateurs afin de prendre des me
msgid "Active Users"
msgstr "Utilisateurs actifs"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "Inscrit le"
@@ -1418,6 +2243,26 @@ msgstr "Ajouter une collection"
msgid "Add your media"
msgstr "Ajoutez votre média"
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Ajouter un commentaire"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Ajouter ce commentaire"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Ajouté"
+
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
@@ -1428,23 +2273,27 @@ msgstr "“%(collection_title)s†(collection de %(username)s)"
msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "“%(collection_title)s†de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Modifier"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Voulez-vous vraiment supprimer “%(title)s†?"
+msgid "Really delete collection: %(title)s?"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
msgstr "Voulez-vous vraiment retirer “%(media_title)s†de “%(collection_title)s†?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
msgid "Remove"
msgstr "Retirer"
@@ -1482,27 +2331,15 @@ msgstr "Médias de <a href=\"%(user_url)s\">%(username)s</a> avec le mot-clé â€
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "Médias de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■Parcourir les médias de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Ajouter un commentaire"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Ajouter ce commentaire"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Prévisualisation du commentaire"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Ajouté"
-
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
@@ -1551,52 +2388,27 @@ msgstr "\n ■Publié par <a href=\"%(user_url)s\"\n
msgid "File Report "
msgstr "Remplir un signalement"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Profil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
msgstr "C'est ici que vous pouvez vous présenter. "
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Modifier le profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Cet utilisateur n'a pas (encore) renseigné son profil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Parcourir les collections"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
#, python-format
msgid "View all of %(username)s's media"
msgstr "Voir tous les médias de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "C'est ici que vos médias s'afficheront, mais vous n'avez rien ajouté pour le moment."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
msgstr "Il n'y a pas de média ici pour le moment..."
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Vérification d'e-mail nécessaire"
-
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
msgid "Almost done! Your account still needs to be activated."
msgstr "Presque fini ! Votre compte a maintenant besoin d'être activé."
@@ -1639,6 +2451,14 @@ msgstr "Dans les collections"
msgid "Add to a collection"
msgstr "Ajouter à une collection"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -1675,6 +2495,10 @@ msgstr "plus récent"
msgid "older"
msgstr "plus ancien"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Emplacement"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "Signaler le média"
@@ -1687,34 +2511,34 @@ msgstr "Etiqueté avec"
msgid "Could not read the image file."
msgstr "Impossible de lire l'image."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Oups !"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Une erreur est survenue"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Mauvaise requête"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "La requête envoyée au serveur est non valide, veuillez la vérifier"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Opération non autorisée"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Je regrette Dave, cela m'est malheureusement impossible !</p><p>Vous avez essayé d'effectuer une action pour laquelle vous n'avez pas de permission. Avez-vous tenté de supprimer tous les comptes utilisateur à nouveau ?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -1755,10 +2579,6 @@ msgid ""
"target=\"_blank\">Markdown</a> for formatting."
msgstr "Vous pouvez utiliser <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> pour le formatage."
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Je suis sûr de vouloir supprimer ce média"
-
#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Je suis sûr de vouloir retirer cet élément de la collection"
@@ -1786,73 +2606,69 @@ msgstr "Vous pouvez utiliser\n<a href=\"http://daringfireball.net/projects/markd
msgid "Reason for Reporting"
msgstr "Raison du signalement"
-#: mediagoblin/user_pages/views.py:178
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Désolé, les commentaires sont désactivés."
-#: mediagoblin/user_pages/views.py:183
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Oups, votre commentaire était vide."
-#: mediagoblin/user_pages/views.py:189
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Votre commentaire a été ajouté !"
-#: mediagoblin/user_pages/views.py:225
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Veuillez vérifier vos entrées et réessayer."
-#: mediagoblin/user_pages/views.py:265
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Vous devez sélectionner ou ajouter une collection"
-#: mediagoblin/user_pages/views.py:276
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "“%s†est déjà dans la collection “%sâ€"
-#: mediagoblin/user_pages/views.py:282
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "“%s†a été ajouté à la collection “%sâ€"
-#: mediagoblin/user_pages/views.py:307
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Vous avez supprimé le média."
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Ce média n'a pas été supprimé car vous n'avez pas coché la case de confirmation. "
-
-#: mediagoblin/user_pages/views.py:326
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Vous vous apprêtez à supprimer le média d'un autre utilisateur. Veuillez prendre garde."
-#: mediagoblin/user_pages/views.py:399
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Vous avez retiré cet élément de la collection."
-#: mediagoblin/user_pages/views.py:403
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "L'élément n'a pas été retiré car vous n'avez pas coché la case de confirmation."
-#: mediagoblin/user_pages/views.py:411
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Vous vous apprêtez à supprimer un élément de la collection d'un autre utilisateur. Veuillez prendre garde. "
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Vous avez supprimé la collection “%sâ€"
-#: mediagoblin/user_pages/views.py:450
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "La collection n'a pas été supprimée car vous n'avez pas coché la case de confirmation. "
-#: mediagoblin/user_pages/views.py:458
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Vous vous apprêtez à supprimer la collection d'un autre utilisateur. Veuillez prendre garde."
diff --git a/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index f1bb44af..00000000
--- a/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index cda25d3b..00000000
--- a/mediagoblin/i18n/gl/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1847 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Adrián Chaves Fernández <adriyetichaves@gmail.com>, 2014
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-01-25 11:05+0000\n"
-"Last-Translator: Adrián Chaves Fernández <adriyetichaves@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/mediagoblin/language/gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Neste sitio non se permite rexistrar novas contas."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "Neste sitio non se permite denunciar."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Neste sitio non se permite autenticarse."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "O nome de usuario ou enderezo de correo fornecidos son incorrectos."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Non pode introducir enderezos de correo neste campo."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Ten que introducir un enderezo de correo neste campo."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Xa existe un usuario con ese nome."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Xa existe un usuario con ese enderezo de correo."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "A chave de verificación ou o identificador do usuario son incorrectos."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Verificouse o seu enderezo de correo. Pode acceder ao sitio, editar o seu perfil, e enviar imaxes!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "A chave de verificación ou o identificador do usuario son incorrectos."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Primeiro debe acceder ao sitio para que saibamos a quen enviarlle o correo!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Xa verificamos o seu enderezo de correo!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Volver enviar o correo de verificación."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Título"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Descrición da obra"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para dar formato."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Separe as etiquetas mediante comas («,»)."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Código"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "O código non pode quedar baleiro."
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "A parte do título no enderezo a esta obra. Normalmente non necesita modificalo."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licenza"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Biografía"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Sitio web"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "O enderezo contén erros."
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Recibir unha notificación por correo cando alguén comente a miña obra."
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Activar as notificacións no sitio web sobre acontecementos."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Preferencias de licenza"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Esta será a súa licenza predeterminada nos formularios de envío de obras."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "O título non pode quedar baleiro."
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Descrición da colección"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "A parte do título no enderezo a esta colección. Normalmente non necesita modificalo."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Contrasinal vello"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Introduza o contrasinal vello para demostrar que é o dono desta conta."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Novo contrasinal"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Novo enderezo de correo"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Contrasinal"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Introduza o contrasinal para demostrar que é o dono desta conta."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "O seu usuario xa ten unha obra con ese código."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Está a editar unha obra doutro usuario. Teña coidado."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Anexou %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Só pode editar o seu propio perfil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Está a editar o perfil doutro usuario Teña coidado."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Gardáronse os cambios no perfil."
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Gardouse a configuración da conta."
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Debe confirmar a eliminación da súa conta."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Xa ten unha colección chamada «%s»!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "O seu usuario xa ten unha colección con ese código."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Está a editar unha colección doutro usuario Teña coidado."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Verificouse o seu enderezo de correo."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "O contrasinal é incorrecto."
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Non é posíbel ligar co tema, non se definiu ningún tema.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "Falta o directorio de recursos, «asset», deste tema.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Porén, atopouse unha ligazón simbólica ao directorio vello de ligazóns, e eliminouse.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "Non foi posíbel ligar «%s»: %s xa existe e non é unha ligazóns simbólica.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Saltándose «%s», xa está configurada.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Atopouse unha ligazón vella para «%s», e eliminouse.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "Falta a cookie «CSRF». A causa máis probábel do problema é un bloqueador de cookies ou algo similar.<br/>Asegúrese de permitir definir cookies a este sitio web."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Ese tipo de ficheiro non é compatíbel."
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "Non puido executarse «unoconv», comprobe o rexistro."
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Fallou a transcodificación do vídeo."
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Retirar un privilexio"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Prohibir o acceso"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Enviar unha mensaxe"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Eliminar o contido"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "O usuario terá prohibido o acceso ata:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "Por que lle vai prohibir o acceso a este usuario?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Que vai facer para resolver a denuncia?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Que privilexios vai retirarlle?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Aviso de"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "comentou na súa publicación."
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Subscrito aos comentarios de %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Non recibirá notificacións sobre comentarios de %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Debe fornecer un «auth_token»."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "Non se atopou o código da solicitude."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "O ficheiro é grande de máis."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "O tamaño do ficheiro é superior ao que resta do seu límite de envío."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Chegou ao seu límite de envío."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Nome de usuario"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Enderezo de correo"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Nome de usuario ou enderezo de correo"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Non pechar a sesión."
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Nome de usuario ou enderezo de correo"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Se o enderezo de correo está rexistrado (ollo coas maiúsculas e as minúsculas), recibirá unha mensaxe con instrucións para cambiar o contrasinal."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Non se atopou ningún usuario con ese nome."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Recibirá unha mensaxe con instrucións para cambiar o contrasinal."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Non foi posíbel enviar o correo de recuperación do contrasinal porque o seu nome de usuario está inactivo ou non verificou o enderezo de correo da súa conta."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "O identificador do usuario é incorrecto."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Xa pode acceder co seu novo contrasinal."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "O seu usuario xa non está activo. Contacte co administrador do sistema para reactivar a súa conta."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "O seu contrasinal cambiouse correctamente."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Establecer o seu novo contrasinal"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Establecer o contrasinal"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Cambiando o contrasinal de %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Gardar"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Aínda non ten conta?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Cree unha!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Cambiar o contrasinal."
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Recuperar o contrasinal"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Enviar instrucións"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Esqueceu o contrasinal?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Lugar"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Ver en <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "Acceda para crear unha conta!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Permitir"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Denegar"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Nome"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "Nome do cliente de OAuth."
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Descrición"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Os usuarios que permitan ao seu programa autenticarse coma eles poderán ver isto."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Tipo"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Confidencial</strong>: O cliente pode realizar solicitudes á instancia de GNU MediaGoblin que non poderán ser interceptadas polo «axente do usuario» (por exemplo, o cliente do lado do servidor).<br/> <strong>Público</strong>: O cliente non pode realizar solicitudes confidenciais á instancia de GNU MediaGoblin (por exemplo, o cliente en JavaScript do lado do cliente)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "URI de redirección"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "O URI de redirección para os programas, este campo é <strong>obrigatorio</strong> para todos os clientes públicos."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "O campo é obrigatorio para os clientes públicos."
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Rexistrouse o cliente {0}!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Conexións de clientes de OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Clientes de OAuth seus"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Engadir"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Xa hai unha conta rexistrada con ese OpenID."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "Non se atopou o servidor de OpenID."
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "Non se atopou ningún servizo de OpenID para %s."
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Non foi posíbel verificar %s: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Cancelouse a verificación."
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "O seu URL de OpenID gardouse correctamente."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Non pode eliminar o seu único URL de OpenID salvo que estableza previamente un contrasinal."
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Ese OpenID non está rexistrado con esta conta."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "O OpenID eliminouse correctamente."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Engadir un OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Eliminar un OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Eliminar"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenIDs"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Acceder"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Fallou o acceso!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "Acceda para crear unha conta!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Ou acceda cun contrasinal!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "Ou acceda con OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "Ou rexístrese con OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Xa hai unha conta rexistrada con ese enderezo de correo de Persona."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "O enderezo de correo da Persona eliminouse correctamente."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "Non pode eliminar o seu único enderezo de correo de Persona salvo que estableza previamente un contrasinal."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "O enderezo de correo de Persona non está rexistrado para esta conta."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Xa hai unha conta rexistrada con ese enderezo de correo de Persona."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "O enderezo de correo da Persona gardouse correctamente."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Eliminar un enderezo de correo de Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Engadir un enderezo de correo de Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "Personas"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "Ou acceda con Persona!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "Ou rexístrese con Persona!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "O ficheiro non se corresponde co tipo de contido."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Non foi posíbel copiar no almacenamento público."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "Non se atopou un ficheiro de procesamento aceptábel."
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Tamaño máximo: {0} MiB"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Ficheiro"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para dar formato."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Debe fornecer un ficheiro."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Si! Enviado!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "Engadiuse a colección «%s»!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Ten prohibido o acceso."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Imaxe de trasno tenso."
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Ten prohibido o acceso"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "ata %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "de maneira indefinida"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Verifique o seu enderezo de correo!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "Saír"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "Conta de <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Cambiar a configuración da conta"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panel de procesamento de contidos"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Saír"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Engadir contidos"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Crear unha colección nova"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr "Panel de xestión de usuarios"
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr "Panel de xestión de denuncias"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Últimos contidos"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorización"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autorizar "
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Accedeu como"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Quere autorizar "
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "un programa descoñecido"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr " a acceder á súa conta? "
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Os programas con acceso á súa conta poden: "
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Publicar novos contidos da súa parte."
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Acceder á súa información (perfil, contidos, etc.)."
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Cambiar a súa información."
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Rematouse a autorización"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Completouse a autorización"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copie isto e pégueo no seu cliente:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Crear unha conta!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Crear"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Ola, %(username)s.\n\nPara activar a súa conta de GNU MediaGoblin, abra a seguinte ligazón no seu navegador web:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Construído con <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, un proxecto de <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Publicado coa licenza <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. O <a href=\"%(source_link)s\">código fonte</a> está dispoñíbel."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "Condicións de uso"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Explorar"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Ola, benvido a este sitio MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "O sitio está construído con <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unha marabilla de software de aloxamento de contidos."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Para engadir contidos seus, comentar e máis cousas, acceda empregando unha conta de MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "Aínda non ten? Non hai problema!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >Cree unha conta neste sitio</a>\n ou"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">monte MediaGoblin no seu propio servidor</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Logo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Editando os anexos de %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Anexos"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Engadir un anexo"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Gardar os cambios"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Cambiando o enderezo de correo de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Está seguro de que quere eliminar o usuario «%(user_name)s» e todos os seus contidos e comentarios?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Eliminar a miña conta"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Eliminar permanentemente"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Editando %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Cambiando a configuración da conta de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Eliminar a miña conta"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Editando %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Editando o perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Ola.\n\nQueremos verificar que vostede é efectivamente %(username)s. De ser o caso, abra a seguinte ligazón nun navegador web para verificar o seu novo enderezo de correo.\n\n%(verification_url)s\n\nSe non é %(username)s ou non solicitou un cambio de enderezo de correo, simplemente ignore esta mensaxe."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Comentarios novos"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "Hai %(formatted_time)s"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Marcalo todo como lido"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Contido etiquetado con: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Descargar"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Orixinal"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Este son non vai funcionar porque o seu navegador web non é compatíbel coa funcionalidade de son de HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Pode obter un navegador web moderno capaz de reproducir o son en <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Ficheiro orixinal"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "Ficheiro WebM (códec Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Creado"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imaxe de %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "Ficheiro PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspectiva"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Frontal"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Superior"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Lateral"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Descargar o modelo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Formato do ficheiro"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Altura do obxecto"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Este vídeo non vai funcionar porque o seu navegador web non é compatíbel coa funcionalidade de vídeo de HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Pode obter un navegador web moderno capaz de reproducir o vídeo en <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "Ficheiro WebM (códec VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Aquí pode comprobar o estado de contidos que se están a procesar neste sitio web."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Contido procesándose"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Non hai contidos procesándose"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Non foi posíbel procesar os seguintes envíos:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Non houbo erros!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Últimos 10 envíos sen erros"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Aínda non hai entradas de procesamento!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr "Non se atopou a denuncia."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr "Volver ao panel de denuncias"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Denuncia"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Comentario denunciado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr "\n â– Contido denunciado por <a href=\"%(user_url)s\">%(user_name)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr "\n ELIMINOUSE\n O CONTIDO DE\n <a href=\"%(user_url)s\"> %(user_name)s</a> "
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr "Resolver"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr "Resolver esta denuncia"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr "Estado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr "RESOLTA"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr "Non pode emprender accións contra un administrador."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr "Panel de denuncias"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr "\n Aquí pode buscar denuncias sen resolver abertas polos usuarios.\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr "Denuncias activas abertas"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr "Denunciado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Data da denuncia"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr "Denunciante"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Motivo"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\n Denuncia de comentario #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr "\n Denuncia de contido #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr "Non se atoparon denuncias sen resolver."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr "Denuncias pechadas"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr "Resolta"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr "Medida adoptada"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr "\n Denuncia pechada #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "Non se atoparon denuncias pechadas."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr "Panel de usuarios"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr "\n Aquí pode buscar usuarios para tomar medidas de castigo contra eles.\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr "Usuarios activos"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "Identificador"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr "Data de creación"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr "Comentarios publicados"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "Non se atoparon usuarios."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Engadir unha colección"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Engada contidos seus"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (colección de %(username)s)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s, de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Editar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Está seguro de que quere eliminar %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Está seguro de que quere retirar %(media_title)s de %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Retirar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Coleccións de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Coleccións de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Ola, %(username)s.\n%(comment_author)s deixou un comentario na súa publicación (%(comment_url)s) en %(instance_name)s.\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Contidos de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Contidos de <a href=\"%(user_url)s\">%(username)s</a> etiquetado con <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Contidos de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "â– Explorando os contidos de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Engadir un comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Engadir o comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Vista previa"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Engadido"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Engadir «%(media_title)s» a unha colección"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Engadir unha colección nova"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Aquí pode comprobar o estado de contidos que se están a procesar para a súa galería."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Últimos 10 envíos seus sen erros"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr "<h2>Poña unha denuncia</h2>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr "Denunciando o comentario"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr "Denunciando o contido"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\n â– Publicado por <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr "Poñer a denuncia "
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Aquí pode falarlle aos demais de vostede."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Editar o perfil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Este usuario aínda non completou o seu perfil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Explorar as coleccións"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Ver os contidos de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Aquí aparecerán os seus contidos, pero parece que aínda non engadiu ningún."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Parece que aínda non hai ningún contido aquí…"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Ten que verificar o seu enderezo de correo"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Xa case está! Só lle falta activar a súa conta."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Debería chegarlle un correo en cuestión de segundos con instrucións."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Se non lle chega:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Enviar o correo de verificación outra vez"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Alguén rexistrou xa unha conta con este nome de usuario, pero aínda ten que activala."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Se esa persoa é vostede pero perdeu a mensaxe de verificación do seu enderezo de correo, pode <a href=\"%(login_url)s\">acceder</a> e volvela enviar."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(retirar)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Parte de"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Engadir a unha colección"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "Icona de fonte de novas"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Fonte de novas Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Todos os dereitos reservados"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Máis novo"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Máis vello →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Ir á páxina:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "máis novo"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "máis vello"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr "Denunciar o contido"
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Etiquetado con"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Non foi posíbel ler o ficheiro da imaxe."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Ups!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Produciuse un erro."
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Petición incorrecta"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "A petición enviada ao servidor é incorrecta, compróbea."
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Operación non permitida"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "Intentou utilizar unha función para a que non ten permisos. Que foi, volveu intentar eliminar todas as contas de usuario outra vez?"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Non existe ningunha páxina con este enderezo.</p><p>Se está seguro de que o enderezo é correcto, pode ser que a páxina se cambiase de enderezo ou se eliminase."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "ano"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "mes"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "semana"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "día"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hora"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minuto"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Comentario"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Pode usar <a href=\"http://daringfireballnet/projects/markdown/basics\" target=\"_blank\">Markdown</a> para dar formato."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Quero eliminalo, estou seguro"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Quero retiralo da colección, estou seguro"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Colección"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "(seleccionar)"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Incluír unha nota"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> para dar formato."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "Motivo da denuncia"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Os comentarios están desactivados."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "O comentario estaba baleiro."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Publicouse o comentario!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Comprobe as entradas e vólvao intentar."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Ten que seleccionar ou engadir unha colección."
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "«%s» xa está na colección «%s»"
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "«%s» engadiuse á colección «%s»"
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Eliminou o contido."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Non se eliminou o contido porque non confirmou que estaba seguro."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Está a piques de eliminar un contido doutro usuario. Teña coidado."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Eliminou o elemento da colección."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "Non se retirou o elemento porque non confirmou que estaba seguro."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Está a piques de retirar un elemento da colección doutro usuario Teña coidado."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Eliminou a colección «%s»"
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "Non se eliminou a colección porque non confirmou que estaba seguro."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Está a piques de eliminar unha colección doutro usuario Teña coidado."
diff --git a/mediagoblin/i18n/gl/mediagoblin.po b/mediagoblin/i18n/gl/mediagoblin.po
new file mode 100644
index 00000000..59073acd
--- /dev/null
+++ b/mediagoblin/i18n/gl/mediagoblin.po
@@ -0,0 +1,2630 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Adrián Chaves Fernández <adriyetichaves@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Galician (http://www.transifex.com/projects/p/mediagoblin/language/gl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Neste sitio non se permite rexistrar novas contas."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Neste sitio non se permite denunciar."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Neste sitio non se permite autenticarse."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "O nome de usuario ou enderezo de correo fornecidos son incorrectos."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Non pode introducir enderezos de correo neste campo."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Ten que introducir un enderezo de correo neste campo."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Xa existe un usuario con ese nome."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Xa existe un usuario con ese enderezo de correo."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "A chave de verificación ou o identificador do usuario son incorrectos."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Verificouse o seu enderezo de correo. Pode acceder ao sitio, editar o seu perfil, e enviar imaxes!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "A chave de verificación ou o identificador do usuario son incorrectos."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Primeiro debe acceder ao sitio para que saibamos a quen enviarlle o correo!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Xa verificamos o seu enderezo de correo!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Volver enviar o correo de verificación."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Título"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Descrición da obra"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para dar formato."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Separe as etiquetas mediante comas («,»)."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Código"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "O código non pode quedar baleiro."
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "A parte do título no enderezo a esta obra. Normalmente non necesita modificalo."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licenza"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Biografía"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Sitio web"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "O enderezo contén erros."
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Recibir unha notificación por correo cando alguén comente a miña obra."
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Activar as notificacións no sitio web sobre acontecementos."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Preferencias de licenza"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Esta será a súa licenza predeterminada nos formularios de envío de obras."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "O título non pode quedar baleiro."
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Descrición da colección"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "A parte do título no enderezo a esta colección. Normalmente non necesita modificalo."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Contrasinal vello"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Introduza o contrasinal vello para demostrar que é o dono desta conta."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Novo contrasinal"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Novo enderezo de correo"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Contrasinal"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Introduza o contrasinal para demostrar que é o dono desta conta."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identificador"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Valor"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "O seu usuario xa ten unha obra con ese código."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Está a editar unha obra doutro usuario. Teña coidado."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Anexou %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Só pode editar o seu propio perfil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Está a editar o perfil doutro usuario Teña coidado."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Gardáronse os cambios no perfil."
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Gardouse a configuración da conta."
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Debe confirmar a eliminación da súa conta."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Xa ten unha colección chamada «%s»!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "O seu usuario xa ten unha colección con ese código."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Está a editar unha colección doutro usuario Teña coidado."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Verificouse o seu enderezo de correo."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "O contrasinal é incorrecto."
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Non é posíbel ligar co tema, non se definiu ningún tema.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Falta o directorio de recursos, «asset», deste tema.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Porén, atopouse unha ligazón simbólica ao directorio vello de ligazóns, e eliminouse.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Non foi posíbel ligar «%s»: %s xa existe e non é unha ligazóns simbólica.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Saltándose «%s», xa está configurada.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Atopouse unha ligazón vella para «%s», e eliminouse.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Para máis información sobre como executar correctamente\neste script e que formato usar para o ficheiro CSV de metadatos,\nlea a páxina de documentación de MediaGoblin sobre o envío de\ndatos desde a liña de ordes:\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Nome do usuario ao que pertencen estes contidos:"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Ruta do ficheiro CSV que contén os metadatos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "Procesar de maneira eficiente."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Non existe ningún usuario «{username}»."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Non se atopou ningún ficheiro en «{path}». Use a opción «-h» para acceder á axuda."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Produciuse un erro co valor «{error_path}» do contido «{media_id}»: {error_msg}\nNon foi posíbel subir os metadatos."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "Erro: Non foi posíbel acceder ao ficheiro local «{filename}».\nNon se enviou o ficheiro."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr "Enviouse o ficheiro «{filename}».\nPode comprobar que se enviou correctamente desde o panel de procesamento de contidos do sitio web."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "Erro: O tamaño do ficheiro supera o límite do sitio."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "Erro: Non foi posíbel enviar o ficheiro porque o usuario superaría o límite de contido que se lle permite enviar."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "Erro: O usuario xa superou o límite de contido que pode enviar."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "Ficheiros enviados correctamente: {files_uploaded}/{files_attempted}."
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "Falta a cookie «CSRF». A causa máis probábel do problema é un bloqueador de cookies ou algo similar.<br/>Asegúrese de permitir definir cookies a este sitio web."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Ese tipo de ficheiro non é compatíbel."
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Descrición"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Quero eliminalo, estou seguro"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Si! Enviado!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Enviáronse as modificacións da publicación."
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Eliminouse a bitácora."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Non se eliminou o contido porque non confirmou que estaba seguro."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Está a piques de eliminar a bitácora doutro usuario."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Non ten permisos para eliminar a bitácora."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Engadir unha publicación"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Editar a bitácora"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Eliminar a bitácora"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Editar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Eliminar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em>Ir á lista</em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Aínda non se publicou nada."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Está seguro de que quere eliminar %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Eliminar permanentemente"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Crear ou editar unha bitácora"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Engadir"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Crear ou editar unha publicación."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Crear ou editar unha publicación."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Bitácora de %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Ver"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Crear unha bitácora"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr "Panel de control da bitácora"
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "Non puido executarse «unoconv», comprobe o rexistro."
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Fallou a transcodificación do vídeo."
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Retirar un privilexio"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Prohibir o acceso"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Enviar unha mensaxe"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Eliminar o contido"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "O usuario terá prohibido o acceso ata:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "Por que lle vai prohibir o acceso a este usuario?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Que vai facer para resolver a denuncia?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Que privilexios vai retirarlle?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Motivo da prohibición de acceso:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Mensaxe ao usuario:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Contido da resolución:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} retiroulle a {user} os privilexios de {privilege}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} prohibiulle o acceso a {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "ata o {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "de maneira indefinida"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} enviou unha mensaxe de advertencia a {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} eliminou o comentario."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} eliminou a entrada multimedia."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Aviso de"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "comentou na súa publicación."
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Subscrito aos comentarios de %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Non recibirá notificacións sobre comentarios de %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Debe fornecer un «auth_token»."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "Non se atopou o código da solicitude."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "O ficheiro é grande de máis."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "O tamaño do ficheiro é superior ao que resta do seu límite de envío."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Chegou ao seu límite de envío."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Introduza o enderezo URL do contido a destacar."
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "Principal"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Secundario"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Terciario"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------Funcionalidades-de-{display_type}------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Isto como funciona?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Como destacar un contido?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr "\nAcceda á páxina do contido que quere destacar. Copie o seu enderezo URL e pégueo nunha liña nova da caixa de texto anterior. Non debería haber máis dun URL por liña. O URL que pegue debería estar baixo a cabeceira que mellor describa a prominencia coa que se debería destacar (principal, secundario, terciario). Unha vez teña todos os contidos que queira destacar na caixa de texto, prema «Enviar a consulta», e os seus contidos aparecerán na súa páxina principal."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "Existe algún outro xeito de xestionar os contidos destacados?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr "\n Así é. Se o prefire, pode ir á páxina principal do contido multimedia que\n quere destacar ou deixar de destacar, e observar a barra lateral da \n páxina. Se o contido non está destacado debería aparecer o botón\n «Destacar». Prémao para destacar o contido como contido destacado\n principal, na parte superior da páxina. O resto de contidos destacados\n seguirán a estar destacados, pero aparecerán máis abaixo na páxina.\n <br /><br />\n\n Se accede á páxina dun contido que está actualmente destacado,\n disporá das opcións «Deixar de destacar», «Promover» e «Degradar»\n onde antes aparecía «Destacar». Prema «Deixar de destacar» para\n deixar de mostrar o contido na páxina principal. Sempre poderá\n destacalo de novo máis tarde. «Promover» aumenta a prominencia do\n contido, mentres que «Degradar» a diminúe.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "Que é un contido destacado principal? Que é un contido destacado secundario?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr "\nEstas categorías describen o nivel de promoción co que se destaca cada contido na páxina principal. Os contidos descatados principais sitúanse ao principio de páxina, e expóñense con maiores dimensións. A continuación van os contidos destacados secundarios, que son lixeiramente máis pequenos. Os contidos destacados terciarios conforman unha grade ao final da páxina.<br /><br />\nAdemais, os contidos destacados principais poden mostrar descricións máis longas que as dos contidos destacados secundarios, e as descricións dos contidos destacados secundarios poden ser máis longas que a dos contidos destacados terciarios."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr "Como decidir que información se mostra ao descatar un contido?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr "\nAo destacar un contido, na páxina principal móstrase o título do contido, unha miniatura e un fragmento da descrición. O número de caracteres que se mostran pode variar dependendo da categoría do contido destacado. Os contidos destacados principais mostran os primeiros 512 caracteres da descrición, os secundarios os primeiros 256, e os terciarios os primeiros 128."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Como deixar de destacar un contido?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr "\nPara deixar de destacar un contido, elimine a súa liña da zona de texto e prema «Enviar a consulta»."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "Advertencia:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr "\nAo copiar e pegar enderezos URL na caixa de texto anterior, teña en conta que calquera erro no proceso (por exemplo, deixarse un caracter dun URL ao copialo) resultará en que ao darlle a «Enviar a consulta» o contido correspondente non apareza destacado. Asegúrese de que os seus contidos destacados se corresponden cos que vostede pegou na caixa de texto."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr "\nDestacar o contido."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Destacar"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr "\nDeixar de destacar o contido."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Deixar de destacar"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr "\nPromover o contido."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Promover"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr "\nDegradar o contido."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Degradar"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Últimos contidos"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "Non hai nada destacado."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr "Se quere destacar un contido,\n abra a páxina do contido e prema o botón\n <a class=\"button_action\">Destacar</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr "Está a ver esta páxina porque a súa conta de usuario\n dispón dos permisos necesarios para destacar contidos, a maior parte\n dos usuarios non verán máis que unha páxina baleira, así que asegúrese\n de destacar contidos sempre que a súa instalación teña activado o\n complemento «archivalook». Atopará unha ferramenta máis avanzada\n para a xestión de contidos destacados no\n <a href=\"%(featured_media_url)s\">panel de xestión de contidos\n destacados</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Ver os últimos contidos"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Panel de xestión dos contidos destacados"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr "Este son non vai funcionar porque o seu navegador web non é compatible coas funcionalidades de son de HTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "<a href=\"http://getfirefox.com\">Descargue un navegador web moderno capaz de reproducir este son!</a>"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Este vídeo non vai funcionar porque o seu navegador web non é compatible coas funcionalidades de vídeo de HTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "<a href=\"http://getfirefox.com\">Descargue un navegador web moderno capaz de reproducir este vídeo!</a>"
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Nome de usuario"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Enderezo de correo"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Nome de usuario ou enderezo de correo"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Non pechar a sesión."
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Nome de usuario ou enderezo de correo"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Se o enderezo de correo está rexistrado (ollo coas maiúsculas e as minúsculas), recibirá unha mensaxe con instrucións para cambiar o contrasinal."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Non se atopou ningún usuario con ese nome."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Recibirá unha mensaxe con instrucións para cambiar o contrasinal."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "Non foi posíbel enviar o correo de recuperación do contrasinal porque o seu nome de usuario está inactivo ou non verificou o enderezo de correo da súa conta."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "O identificador do usuario é incorrecto."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Xa pode acceder co seu novo contrasinal."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "O seu usuario xa non está activo. Contacte co administrador do sistema para reactivar a súa conta."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "O seu contrasinal cambiouse correctamente."
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Establecer o seu novo contrasinal"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Establecer o contrasinal"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Cambiando o contrasinal de %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Gardar"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "Aínda non ten conta?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Cree unha!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Cambiar o contrasinal."
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Recuperar o contrasinal"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Enviar instrucións"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Esqueceu o contrasinal?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Ver en <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "Acceda para crear unha conta!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadatos"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Editar os metadatos"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permitir"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Denegar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nome"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "Nome do cliente de OAuth."
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Os usuarios que permitan ao seu programa autenticarse coma eles poderán ver isto."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Tipo"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Confidencial</strong>: O cliente pode realizar solicitudes á instancia de GNU MediaGoblin que non poderán ser interceptadas polo «axente do usuario» (por exemplo, o cliente do lado do servidor).<br/> <strong>Público</strong>: O cliente non pode realizar solicitudes confidenciais á instancia de GNU MediaGoblin (por exemplo, o cliente en JavaScript do lado do cliente)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "URI de redirección"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "O URI de redirección para os programas, este campo é <strong>obrigatorio</strong> para todos os clientes públicos."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "O campo é obrigatorio para os clientes públicos."
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "Rexistrouse o cliente {0}!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Conexións de clientes de OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Clientes de OAuth seus"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Xa hai unha conta rexistrada con ese OpenID."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Non se atopou o servidor de OpenID."
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "Non se atopou ningún servizo de OpenID para %s."
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Non foi posíbel verificar %s: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Cancelouse a verificación."
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "O seu URL de OpenID gardouse correctamente."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "Non pode eliminar o seu único URL de OpenID salvo que estableza previamente un contrasinal."
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Ese OpenID non está rexistrado con esta conta."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "O OpenID eliminouse correctamente."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Engadir un OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Eliminar un OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenIDs"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Acceder"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Fallou o acceso!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "Acceda para crear unha conta!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Ou acceda cun contrasinal!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "Ou acceda con OpenID!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "Ou rexístrese con OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Xa hai unha conta rexistrada con ese enderezo de correo de Persona."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "O enderezo de correo da Persona eliminouse correctamente."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "Non pode eliminar o seu único enderezo de correo de Persona salvo que estableza previamente un contrasinal."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "O enderezo de correo de Persona non está rexistrado para esta conta."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Xa hai unha conta rexistrada con ese enderezo de correo de Persona."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "O enderezo de correo da Persona gardouse correctamente."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Eliminar un enderezo de correo de Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Engadir un enderezo de correo de Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "Personas"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "Ou acceda con Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "Ou rexístrese con Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "O ficheiro non se corresponde co tipo de contido."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Non foi posíbel copiar no almacenamento público."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "Non se atopou un ficheiro de procesamento aceptábel."
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Tamaño máximo: {0} MiB"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Ficheiro"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> para dar formato."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Debe fornecer un ficheiro."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Engadiuse a colección «%s»!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Ten prohibido o acceso."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imaxe de trasno tenso."
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Ten prohibido o acceso"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "ata %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Verifique o seu enderezo de correo!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "Saír"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "Conta de <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Cambiar a configuración da conta"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Panel de procesamento de contidos"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Saír"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Engadir contidos"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Crear unha colección nova"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Poderes de moderación:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Panel de xestión de usuarios"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Panel de xestión de denuncias"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorización"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autorizar "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Accedeu como"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Quere autorizar "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "un programa descoñecido"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr " a acceder á súa conta? "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Os programas con acceso á súa conta poden: "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Publicar novos contidos da súa parte."
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Acceder á súa información (perfil, contidos, etc.)."
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Cambiar a súa información."
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Rematouse a autorización"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Completouse a autorización"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Crear unha conta!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Crear"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Ola, %(username)s.\n\nPara activar a súa conta de GNU MediaGoblin, abra a seguinte ligazón no seu navegador web:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Construído con <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, un proxecto de <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Publicado coa licenza <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. O <a href=\"%(source_link)s\">código fonte</a> está dispoñíbel."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Condicións de uso"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Explorar"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Ola, benvido a este sitio MediaGoblin!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "O sitio está construído con <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unha marabilla de software de aloxamento de contidos."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Para engadir contidos seus, comentar e máis cousas, acceda empregando unha conta de MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "Aínda non ten? Non hai problema!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n>Cree unha conta neste sitio</a>\n ou"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Instale MediaGoblin no seu propio servidor</a>"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logo de MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Editando os anexos de %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Anexos"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Engadir un anexo"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Gardar os cambios"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Cambiando o enderezo de correo de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "Hai %(formatted_time)s"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Está seguro de que quere eliminar o usuario «%(user_name)s» e todos os seus contidos e comentarios?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Eliminar a miña conta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Editando %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "Cambiando a configuración da conta de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Eliminar a miña conta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Editando %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Editando o perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadatos de «%(media_name)s»"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Metadatos"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Engadir unha fila"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Actualizar os metadatos"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Retirar as filas baleiras"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Ola.\n\nQueremos verificar que vostede é efectivamente %(username)s. De ser o caso, abra a seguinte ligazón nun navegador web para verificar o seu novo enderezo de correo.\n\n%(verification_url)s\n\nSe non é %(username)s ou non solicitou un cambio de enderezo de correo, simplemente ignore esta mensaxe."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Comentarios novos"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Marcalo todo como lido"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Contido etiquetado con: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Descargar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Orixinal"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Ficheiro orixinal"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "Ficheiro WebM (códec Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Creado"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imaxe de %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "Ficheiro PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Frontal"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Superior"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Lateral"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Descargar o modelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formato do ficheiro"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Altura do obxecto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Este vídeo non vai funcionar porque o seu navegador web non é compatíbel coa funcionalidade de vídeo de HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Pode obter un navegador web moderno capaz de reproducir o vídeo en <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "Ficheiro WebM (códec VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Aquí pode comprobar o estado de contidos que se están a procesar neste sitio web."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Contido procesándose"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "Identificador"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Usuario"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Ao enviarse"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Progreso do cambio de codificación"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Descoñecido"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Non hai contidos procesándose"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Non foi posíbel procesar os seguintes envíos:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Motivo do erro"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Datos do erro"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Non houbo erros!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Últimos 10 envíos sen erros"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Enviado"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Aínda non hai entradas de procesamento!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Non se atopou a denuncia."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Volver ao panel de denuncias"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Denuncia"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Comentario denunciado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr "\n â– Contido denunciado por <a href=\"%(user_url)s\">%(user_name)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr "\n ELIMINOUSE\n O CONTIDO DE\n <a href=\"%(user_url)s\"> %(user_name)s</a> "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Motivo do informe:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Resolver"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Resolver esta denuncia"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Estado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "RESOLTA"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "Non pode emprender accións contra un administrador."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Panel de denuncias"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr "\n Aquí pode buscar denuncias sen resolver abertas polos usuarios.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr "Denuncias activas abertas"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Denunciado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Data da denuncia"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Denunciante"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Motivo"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr "\n Denuncia de comentario #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr "\n Denuncia de contido #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "Non se atoparon denuncias sen resolver."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Denuncias pechadas"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Resolta"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Medida adoptada"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr "\n Denuncia pechada #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Non se atoparon denuncias pechadas."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Usuario: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Volver ao panel de usuarios"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Non se atopou o usuario indicado."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Ten que verificar o seu enderezo de correo"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "Alguén rexistrou xa unha conta con ese nome de usuario, aínda que a conta aínda non está activada."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "Ten prohibido o acceso ata o %(expiration_date)s."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "Ten prohibido o acceso de maneira indefinida."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Este usuario aínda non completou o seu perfil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Editar o perfil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Explorar as coleccións"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Denuncias activas contra %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "Identificador da denuncia"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Contido denunciado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Texto da denuncia"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Denuncia %(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Comentario denunciado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Contido denunciado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "Non hai denuncias activas contra %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Todas as denuncias contra %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Todas as denuncias interpostas por %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "Privilexios de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Privilexio"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Outorgado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Si"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Non"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Prohibir o acceso"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Readmitir"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Panel de usuarios"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr "\n Aquí pode buscar usuarios para tomar medidas de castigo contra eles.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Usuarios activos"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Data de creación"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "Comentarios publicados"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "Non se atoparon usuarios."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Engadir unha colección"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Engada contidos seus"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Publicación de <a href=\"%(user_url)s\">%(username)s</a>."
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Engadir un comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Engadir o comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Engadido"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (colección de %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s, de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Eliminar a colección «%(collection_title)s»"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "Está seguro de que quere eliminar a colección «%(title)s»?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Retirar «%(media_title)s» de «%(collection_title)s»"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Está seguro de que quere retirar %(media_title)s de %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Retirar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Coleccións de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Coleccións de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Ola, %(username)s.\n%(comment_author)s deixou un comentario na súa publicación (%(comment_url)s) en %(instance_name)s.\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Contidos de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "Contidos de <a href=\"%(user_url)s\">%(username)s</a> etiquetado con <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Contidos de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Explorando os contidos de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Vista previa"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Engadir «%(media_title)s» a unha colección"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Engadir unha colección nova"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Aquí pode comprobar o estado de contidos que se están a procesar para a súa galería."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Últimos 10 envíos seus sen erros"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Poña unha denuncia</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Denunciando o comentario"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "Denunciando o contido"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\n â– Publicado por <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Poñer a denuncia "
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Aquí pode falarlle aos demais de vostede."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Ver os contidos de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Aquí aparecerán os seus contidos, pero parece que aínda non engadiu ningún."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Parece que aínda non hai ningún contido aquí…"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Xa case está! Só lle falta activar a súa conta."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Debería chegarlle un correo en cuestión de segundos con instrucións."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "Se non lle chega:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Enviar o correo de verificación outra vez"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Alguén rexistrou xa unha conta con este nome de usuario, pero aínda ten que activala."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Se esa persoa é vostede pero perdeu a mensaxe de verificación do seu enderezo de correo, pode <a href=\"%(login_url)s\">acceder</a> e volvela enviar."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(retirar)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Parte de"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Engadir a unha colección"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Subscribirse aos comentarios"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Silenciar os comentarios"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "Icona de fonte de novas"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Fonte de novas Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Todos os dereitos reservados"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Máis novo"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Máis vello →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Ir á páxina:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "máis novo"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "máis vello"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Lugar"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Denunciar o contido"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Etiquetado con"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Non foi posíbel ler o ficheiro da imaxe."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Ups!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Produciuse un erro."
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Petición incorrecta"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "A petición enviada ao servidor é incorrecta, compróbea."
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Operación non permitida"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Intentou utilizar unha función para a que non ten permisos. Que foi, volveu intentar eliminar todas as contas de usuario outra vez?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Non existe ningunha páxina con este enderezo.</p><p>Se está seguro de que o enderezo é correcto, pode ser que a páxina se cambiase de enderezo ou se eliminase."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "ano"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "mes"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "semana"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "día"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hora"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minuto"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comentario"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Pode usar <a href=\"http://daringfireballnet/projects/markdown/basics\" target=\"_blank\">Markdown</a> para dar formato."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Quero retiralo da colección, estou seguro"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Colección"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "(seleccionar)"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Incluír unha nota"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Pode usar\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> para dar formato."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Motivo da denuncia"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Os comentarios están desactivados."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "O comentario estaba baleiro."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Publicouse o comentario!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Comprobe as entradas e vólvao intentar."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Ten que seleccionar ou engadir unha colección."
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "«%s» xa está na colección «%s»"
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "«%s» engadiuse á colección «%s»"
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Eliminou o contido."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Está a piques de eliminar un contido doutro usuario. Teña coidado."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Eliminou o elemento da colección."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "Non se retirou o elemento porque non confirmou que estaba seguro."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Está a piques de retirar un elemento da colección doutro usuario Teña coidado."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Eliminou a colección «%s»"
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "Non se eliminou a colección porque non confirmou que estaba seguro."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Está a piques de eliminar unha colección doutro usuario Teña coidado."
diff --git a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 3cd64f72..00000000
--- a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/he/mediagoblin.po
index 14c7f9a4..7df3d153 100644
--- a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/he/mediagoblin.po
@@ -1,90 +1,198 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# GenghisKhan <genghiskhan@gmx.ca>, 2013
+# GenghisKhan <genghiskhan@gmx.ca>, 2013-2014
# GenghisKhan <genghiskhan@gmx.ca>, 2012
# GenghisKhan <genghiskhan@gmx.ca>, 2012
+# efraim <efraim@flashner.co.il>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/mediagoblin/language/he/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-02-16 10:19+0000\n"
+"Last-Translator: efraim <efraim@flashner.co.il>\n"
+"Language-Team: Hebrew "
+"(http://www.transifex.com/projects/p/mediagoblin/language/he/)\n"
+"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
-"Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1424081952.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "לצערנו, ×¨×™×©×•× ×”×™× ×• מנוטרל על שרת ×–×”."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr "לצערנו, דיווח הינו ×ž× ×•×˜×¨×œ×™× ×¢×œ שרת ×–×”."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "לצערנו, ×ימות הינו מנוטרל על שרת ×–×”."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "×©× ×ž×©×ª×ž×© ×ו דו×״ל שגויי×."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
-msgstr "שדה ×–×” ×œ× ×œ×•×§×— כתובות דו×״ל."
+msgstr "שדה ×–×” ×œ× ×ž×§×‘×œ כתובות דו×״ל."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "שדה ×–×” מצריך כתובת דו×״ל."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "לצערנו, משתמש ×¢× ×©× ×–×” כבר ×§×™×™×."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "לצערנו, משתמש ×¢× ×›×ª×•×‘×ª דו×״ל זו כבר ×§×™×™×."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "מפתח ×”×ימות ×ו מזהה המשתמש ×ינו מדויק."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "כתובת הדו×״ל שלך ×ומתה. כעת ב×פשרותך להתחבר, לערוך ×ת דיוקנך, ולשלוח תמונות!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "מפתח ×”×ימות ×ו זהות משתמש ×”×™× × ×©×’×•×™×™×"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "עליך להתחבר על מנת שנדע ×ל מי לשלוח ×ת הדו×״ל!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "כבר ×ימתת ×ת כתובת הדו×״ל שלך!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "שלח שוב ×ת דו×״ל ×”×ימות שלך."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} חיבר {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} יצר {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} מחק {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} ×¤×™×¨×¡× {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} עדכן {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "כותרת"
@@ -93,7 +201,7 @@ msgid "Description of this work"
msgstr "תי×ור של מל××›×” זו"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -109,11 +217,11 @@ msgstr "תגיות"
msgid "Separate tags by commas."
msgstr "הפרד תגיות בעזרת פסיקי×."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "חשופית"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "החשופית ×œ× ×™×›×•×œ×” להיות ריקה"
@@ -141,125 +249,137 @@ msgstr "×תר רשת"
msgid "This address contains errors"
msgstr "כתובת זו מכילה שגי×ות"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "שלח לי דו×״ל ×›×שר ××—×¨×™× ×ž×’×™×‘×™× ×¢×œ המדיה שלי"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "עדיפות רשיון"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "×–×” ×™×”×™×” הרשיוןן המשתמט (ברירת מחדל) שלך בטופסי העל××”."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "הכותרת ×œ× ×™×›×•×œ×” להיות ריקה"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "תי×ור ×וסף ×–×”"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "×זור הכותרת של כתובת ×וסף ×–×”. לרוב ×ין הכרח לשנות ×ת חלק ×–×”."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "סיסמה ישנה"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "הזן ×ת סיסמתך הישנה כדי להוכיח ש×תה ×”×‘×¢×œ×™× ×©×œ חשבון ×–×”."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "סיסמה חדשה"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "כתובת דו×״ל חדשה"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "סיסמה"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "הזן ×ת הסיסמה שלך כדי להוכיח ×›×™ ×תה ×”×‘×¢×œ×™× ×©×œ חשבון ×–×”."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "מזהה"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "ערך"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "רשומה ×¢× ×—×©×•×¤×™×ª זו כבר קיימת עבור משתמש ×–×”."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "×תה עורך מדיה של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "הוספת ×ת התצריף %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "ב×פשרותך לערוך רק ×ת הדיוקן שלך."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "×תה עורך דיוקן של משתמש. המשך בזהירות."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "שינויי דיוקן נשמרו"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "הגדרות חשבון נשמרו"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "עליך ל×מת ×ת המחיקה של חשבונך."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "כבר יש לך ×וסף שקרוי ×‘×©× \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "×וסף ×¢× ×—×©×•×¤×™×ª זו כבר ×§×™×™× ×¢×‘×•×¨ משתמש ×–×”."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "×תה עורך ×וסף של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "כתובת הדו×״ל שלך ×ומתה."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "סיסמה שגויה"
@@ -290,7 +410,7 @@ msgstr "מדלג על \"%s\"; כבר מוגדר.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "קישור ישן × ×ž×¦× ×¢×‘×•×¨ \"%s\"; מסיר כעת.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -298,72 +418,72 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "×©× ×ž×©×ª×ž×© לו ×©×™×™×›×™× ×¢×¨×›×™ מדיה ×לו"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "נתיב ×ל קובץ csv ×שר מכיל מידע-מוצמד."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "לצערנו, ×œ× ×§×™×™× ×ž×©×ª×ž×© העונה על ×©× ×ž×©×ª×ž×© '{username}'"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "{files_uploaded} מתוך {files_attempted} ×§×‘×¦×™× × ×©×œ×—×• בהצלחה"
#: mediagoblin/meddleware/csrf.py:134
msgid ""
"CSRF cookie not present. This is most likely the result of a cookie blocker "
"or somesuch.<br/>Make sure to permit the settings of cookies for this "
"domain."
-msgstr "עוגיית CSRF ×œ× × ×•×›×—×ª. ×–×” קרוב לווד××™ נובע ×ž×©×•× ×—×•×¡× ×¢×•×’×™×™×” ×ו משהו בסגנון.<br/>הבטח קביעה של עוגיות עבור ×ª×—×•× ×–×”."
+msgstr "עוגיית CSRF ×œ× × ×ž×¦×ת. ×–×” נובע כנר××” ×ž×©×•× ×—×•×¡× ×¢×•×’×™×™×”.<br/>×•×“× ×œ×”×‘×˜×™×— התרה של עוגיות עבור ×ª×—×•× ×–×”."
#: mediagoblin/media_types/__init__.py:79
#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
-msgstr "לצערנו, ××™× × ×™ תומך בטיפוס קובץ ×–×” :("
+msgstr "לצערנו, ×יננו ×ª×•×ž×›×™× ×‘×˜×™×¤×•×¡ קובץ ×–×” :("
#: mediagoblin/media_types/blog/forms.py:26
#: mediagoblin/media_types/blog/forms.py:35
@@ -375,48 +495,48 @@ msgstr "תי×ור"
msgid "I am sure I want to delete this"
msgstr "×× ×™ בטוח שברצוני למחוק ×–×ת"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "הידד! נשלח!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "מחקת ×ת הבלוג."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "המדיה ×œ× × ×ž×—×§×” מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "בחרת למחוק בלוג של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "הבלוג ×œ× × ×ž×—×§ מהסיבה ×›×™ ×ין לך זכויות."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "הוסף ×¤×¨×¡×•× ×‘×œ×•×’"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "ערוך בלוג"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "מחק בלוג"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "ערוך"
@@ -426,17 +546,17 @@ msgstr "ערוך"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "מחק"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> עבור ×ל תצוגת רשימה </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr " ×ין עוד ×¤×¨×¡×•× ×‘×œ×•×’. "
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -465,7 +585,7 @@ msgstr "מחק לצמיתות"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "צור/ערוך בלוג"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -478,28 +598,28 @@ msgstr "הוסף"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "צור/ערוך ×¤×¨×¡×•× ×‘×œ×•×’."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "צור/ערוך ×¤×¨×¡×•× ×‘×œ×•×’."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "הבלוג של %(blog_owner_name)s"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "תצוגה"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "צור בלוג"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr " מסד × ×ª×•× ×™× ×‘×œ×•×’ "
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
@@ -541,7 +661,60 @@ msgstr "ב×יזו פעולה תנקוט כדי לפתור ×ת דיווח ×–×”?
msgid "What privileges will you take away?"
msgstr "×ילו פריבילגיות ×תה תסיר?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "מדוע משתמש × ×סר:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "הודעה ×ל משתמש:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} נטל פריבילגיות {privilege} של {user}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n {mod} ×סר משתמש {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "עד {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "לצמיתה"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} שלח דו×״ל ×זהרה ×ל {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n {mod} מחק ×ת התגובה."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n {mod} מחק ×ת רשומת המדיה."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "×זהרה מ×ת"
@@ -559,26 +732,26 @@ msgstr "×”×™×¨×©× ×ל תגובות בתוך %s!"
msgid "You will not receive notifications for comments on %s."
msgstr "×תה ×œ× ×ª×§×‘×œ התר×ות עבור הודעות על %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "יש לספק oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "×œ× × ×ž×¦××” ×ות בקשה."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "לצערנו, גודל הקובץ גדול מדי."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "לצערנו, העל×ת קובץ ×–×” ×ª×©×™× ×ותך למעלה מן גבול ההעל××” שלך."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "לצערנו, חצית ×ת מגבלת ההעל××”."
@@ -588,27 +761,27 @@ msgstr ""
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "ר×שוני"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "שניוני"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "שלישוני"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
-msgstr ""
+msgstr "-----------{display_type}-תכונות---------------------------\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "כיצד זה עובד?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "כיצד ל×פיין מדיה?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
@@ -625,7 +798,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "×”×× ×™×© דרך ×חרת לנהל מדיה מובלטת?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -633,7 +806,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -651,7 +824,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
msgid "What is a Primary Feature? What is a Secondary Feature?"
-msgstr ""
+msgstr "מה ×–×” מובלט ר×שוני? מה ×–×” מובלט שניוני?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
@@ -686,7 +859,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
msgid "How to unfeature a piece of media?"
-msgstr ""
+msgstr "כיצד לבטל הבלטת חתיכה של מדיה?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
@@ -694,11 +867,11 @@ msgid ""
" Unfeature a media by removing its line from the above textarea and then\n"
" pressing the Submit Query button.\n"
" "
-msgstr ""
+msgstr "\nבטל הבלטת מדיה על ידי הסרת שורה מתוך שדה הטקסט לעיל ו××–\nלחץ על לחצן שלח ש×ילת×."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "זהירות:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -713,41 +886,41 @@ msgstr ""
msgid ""
"\n"
"Feature Media "
-msgstr ""
+msgstr "\n הבלט מדיה "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
msgid "Feature"
-msgstr ""
+msgstr "הבלט"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
msgid ""
"\n"
"Unfeature Media "
-msgstr ""
+msgstr "\n בטל הבלטת מדיה "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
msgid "Unfeature"
-msgstr ""
+msgstr "בטל הבלטה"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
msgid ""
"\n"
"Promote Feature "
-msgstr ""
+msgstr "\n ×§×“× ×ž×•×‘×œ×˜×ª "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
msgid "Promote"
-msgstr ""
+msgstr "קד×"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
msgid ""
"\n"
"Demote Feature "
-msgstr ""
+msgstr "\n הנמך מובלטת "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
msgid "Demote"
-msgstr ""
+msgstr "הנמך"
#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
#: mediagoblin/templates/mediagoblin/root.html:32
@@ -756,49 +929,46 @@ msgstr "המדיות ×”×חרונות ביותר"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
-msgstr ""
+msgstr "×©×•× ×“×‘×¨ ×ינו ×שר מובלט."
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "תפיה במדיה ×”×חרונה ביותר"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "לוח ניהול תכונות"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
"Sorry, this audio will not work because\n"
"\tyour web browser does not support HTML5\n"
"\taudio."
-msgstr ""
+msgstr "לצערנו, ×ודיו ×–×” ×œ× ×™×¢×‘×•×“ מכיוון\n\tשדפדפן הרשת שלך ×œ× ×ª×•×ž×š ×ודיו\n\tשל HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
"You can get a modern web browser that\n"
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
-msgstr ""
+msgstr "ב×פשרותך להשיג דפדפן רשת מודרני ×שר כן מסוגל\n\tלנגן ×ת ×ודיו ×–×” בכתובת <a href=\"http://getfirefox.com\">\n\thttp://getfirefox.com</a>!"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
@@ -806,7 +976,7 @@ msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
-msgstr ""
+msgstr "לצערנו, ויד×ו ×–×” ×œ× ×™×¢×‘×•×“ מכיוון\nשדפדפן הרשת שלך ×œ× ×ª×•×ž×š ויד×ו\nשל HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -814,7 +984,7 @@ msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
-msgstr ""
+msgstr "ב×פשרותך להשיג דפדפן רשת מודרני ×שר כן מסוגל\nלנגן ×ת ויד×ו ×–×” בכתובת <a href=\"http://getfirefox.com\">\nhttp://getfirefox.com</a>!"
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
@@ -846,7 +1016,7 @@ msgstr "×©× ×ž×©×ª×ž×© ×ו דו×״ל"
msgid ""
"If that email address (case sensitive!) is registered an email has been sent"
" with instructions on how to change your password."
-msgstr "במידה וכתובת הדו×״ל הזו (תלוי רישיות!) רשומה דו×״ל נשלח ×¢× ×”×•×¨×ות בנוגע לכיצד לשנות ×ת סיסמתך."
+msgstr "×× ×›×ª×•×‘×ª דו×״ל זו (תלוית רישיות!) רשומה, דו×״ל נשלח בצירוף הור×ות לגבי שינוי הסיסמה שלך."
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
@@ -861,7 +1031,7 @@ msgstr "דו×״ל נשלח בצירוף הור×ות בנוגע לכיצד × ×™
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr "×œ× ×”×™×” ניתן לשלוח דו×״ל לשחזור סיסמה מ×חר ×•×©× ×”×ž×©×ª×ž×© שלך ×ינו פעיל ×ו שכתובת הדו×״ל של חשבונך ×œ× ×ומתה."
+msgstr "×œ× ×”×™×” ניתן לשלוח דו×״ל ×œ×©× ×©×—×–×•×¨ סיסמה מ×חר ×•×©× ×”×ž×©×ª×ž×© שלך ×ינו פעיל ×ו שכתובת הדו×״ל של חשבונך ×œ× ×ומתה."
#: mediagoblin/plugins/basic_auth/views.py:123
msgid "The user id is incorrect."
@@ -926,11 +1096,7 @@ msgstr "שלח הור×ות"
msgid "Forgot your password?"
msgstr "שכחת ×ת סיסמתך?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "מיקו×"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "הצג בתוך <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -941,11 +1107,11 @@ msgstr "התחבר כדי ליצור חשבון!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "מידע-מוצמד"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "ערוך מידע-מוצמד"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
@@ -997,7 +1163,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr "שדה ×–×” הינו דרוש עבור לקוחות פומביי×"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "הלקוח {0} נרש×!"
@@ -1010,8 +1176,8 @@ msgid "Your OAuth clients"
msgstr "לקוחות OAuth שלך"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "לצערנו, ×§×™×™× ×›×‘×¨ חשבון ×שר ×¨×©×•× ×¢× OpenID."
@@ -1019,39 +1185,39 @@ msgstr "לצערנו, ×§×™×™× ×›×‘×¨ חשבון ×שר ×¨×©×•× ×¢× OpenID."
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "לצערנו, שרת OpenID ×œ× ×”×™×” יכול להימצ×"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "×œ× × ×ž×¦× ×©×™×¨×•×ª OpenID עבור %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "×ימות של %s נכשל: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "×ימות בוטל"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "כתובת OpenID נשמרה בהצלחה."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "×ין ב×פשרותך למחוק כתובת ×›×שר זו היחידה שלך ××œ× ×× ×›×Ÿ הגדרת סיסמה."
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "כתובת זו ×œ× ×¨×©×•×ž×” לחשבון ×–×”."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID הוסר בהצלחה."
@@ -1075,7 +1241,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1093,7 +1259,7 @@ msgstr "התחבר כדי ליצור חשבון!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
msgid "Or login with a password!"
-msgstr "×ו התחבר בעזרת סיסמה!"
+msgstr "×פשר להתחבר ×’× ×‘×¢×–×¨×ª סיסמה!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
msgid "Or login with OpenID!"
@@ -1101,32 +1267,32 @@ msgstr "×ו התחבר ×¢× OpenID!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
msgid "Or register with OpenID!"
-msgstr "×ו ×”×™×¨×©× ×‘×¢×–×¨×ª OpenID!"
+msgstr "×פשר ×œ×”×™×¨×©× ×’× ×‘×¢×–×¨×ª OpenID!"
#: mediagoblin/plugins/persona/__init__.py:90
msgid "Sorry, an account is already registered to that Persona email."
msgstr "לצערנו, ×§×™×™× ×›×‘×¨ חשבון ×שר ×¨×©×•× ×œ×ישיות דו×״ל זו."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "כתובת דו×״ל ×ישיות הוסרה בהצלחה."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "×ין ב×פשרותך למחוק כתובת דו×״ל ×ישיות ×›×שר זו היחידה שלך ××œ× ×× ×›×Ÿ הגדרת סיסמה."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "כתובת דו×״ל ×ישיות זו ×œ× ×¨×©×•×ž×” לחשבון ×–×”."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "לצערנו, ×§×™×™× ×›×‘×¨ חשבון ×שר ×¨×©×•× ×¢× ×ישיות כתובת דו×״ל זו."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "כתובת דו×״ל ×ישיות נשמרה בהצלחה."
@@ -1150,15 +1316,15 @@ msgstr "×ו תתחבר ×¢× ×ישיות!"
msgid "Or register with Persona!"
msgstr "×ו ×¨×©×•× ×ישיות חדשה!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "ניתן קובץ שגוי עבור טיפוס מדיה."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "העתקה ×ל ×חסון פומבי נכשלה."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "קובץ עיבוד קביל ×œ× × ×ž×¦×"
@@ -1177,18 +1343,18 @@ msgid ""
" Markdown</a> for formatting."
msgstr "ב×פשרותך להשתמש בתחביר\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> עבור עיצוב."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "עליך לספק קובץ."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "×וסף \"%s\" התווסף!"
#: mediagoblin/templates/mediagoblin/banned.html:20
msgid "You are Banned."
-msgstr "×תה חסו×."
+msgstr "הינך ×סור."
#: mediagoblin/templates/mediagoblin/banned.html:24
#: mediagoblin/templates/mediagoblin/error.html:24
@@ -1204,30 +1370,26 @@ msgstr "× ×סרת"
msgid "until %(until_when)s"
msgstr "עד %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "לצמיתה"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "×מת ×ת הדו×״ל שלך!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
-msgstr "התנתקות"
+msgstr "התנתק"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "החשבון של <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "שנה הגדרות חשבון"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1235,25 +1397,29 @@ msgstr "שנה הגדרות חשבון"
msgid "Media processing panel"
msgstr "לוח עיבוד מדיה"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
-msgstr "התנתקות"
+msgstr "התנתק"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "הוספת מדיה"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "צור ×וסף חדש"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "לוח ניהול משתמש"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "לוח ×רגון דיווחי×"
@@ -1307,13 +1473,13 @@ msgid "Authorization Complete"
msgstr "הרש××” הושלמה"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "העתק והדבק ×ת מידע ×–×” ×ל תוך הלקוח שלך:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "יצירת חשבון!"
+msgstr "צור חשבון!"
#: mediagoblin/templates/mediagoblin/auth/register.html:41
msgid "Create"
@@ -1335,7 +1501,7 @@ msgstr "×©×œ×•× %(username)s,\n\nבכדי להפעיל ×ת חשבונך בשי
msgid ""
"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "ממונע על ידי <a href=\"http://mediagoblin.org/\" title='גירסה %(version)s'>MediaGoblin</a>, פרויקט <a href=\"http://gnu.org/\">GNU</a>."
+msgstr "ממונע על ידי <a href=\"http://mediagoblin.org/\" title='גירסה %(version)s'>MediaGoblin</a>, פרויקט של <a href=\"http://gnu.org/\">GNU</a>."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
@@ -1378,13 +1544,13 @@ msgid ""
"\n"
" >Create an account at this site</a>\n"
" or"
-msgstr ""
+msgstr "\n>צור חשבון ב×תר ×–×”</a>\n×ו"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr ""
+msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">התקן ×ת MediaGoblin על השרת שלך</a>"
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -1398,13 +1564,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "עריכת ×ª×¦×¨×™×¤×™× ×¢×‘×•×¨ %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "תצריפי×"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "הוספת תצריף"
@@ -1422,6 +1588,47 @@ msgstr "שמור שינויי×"
msgid "Changing %(username)s's email"
msgstr "שינוי דו×״ל של %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "טיפוס:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "לפני %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1447,7 +1654,7 @@ msgstr "שינוי הגדרות חשבון עבור %(username)s"
msgid "Delete my account"
msgstr "מחק ×ת החשבון שלי"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "דו×״ל"
@@ -1465,23 +1672,23 @@ msgstr "עריכת דיוקן עבור %(username)s"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
msgid "Metadata for \"%(media_name)s\""
-msgstr ""
+msgstr "מידע-מוצמד עבור \"%(media_name)s\""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "מידע-מוצמד"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
-msgstr ""
+msgstr "הוסף שורה חדשה"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "עדכן מידע-מוצמד"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
-msgstr ""
+msgstr "טהר שורות ריקות"
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
@@ -1501,19 +1708,6 @@ msgstr "שלו×,\n\nברצוננו ל×מת ×›×™ הינך %(username)s. ×× ×›
msgid "New comments"
msgstr "תגובות חדשות"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "לפני %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "סמן הכל כנקר×"
@@ -1526,38 +1720,38 @@ msgstr "סמן הכל כנקר×"
msgid "Media tagged with: %(tag_name)s"
msgstr "מדיה מתויגת ×¢×: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "הורד"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "מקורית"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "לצערנו, ×ודיו ×–×” ×œ× ×™×¢×‘×•×“ מכיוון \n\tשדפדפן הרשת שלך ×œ× ×ª×•×ž×š \n\t×ודיו של HTML5."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "ב×פשרותך להשיג דפדפן רשת מודרני \n\tשכן מסוגל לנגן ×ת ×ודיו ×–×” ב×תר <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "קובץ מקורי"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "קובץ WebM (קודק Vorbis)"
@@ -1565,70 +1759,70 @@ msgstr "קובץ WebM (קודק Vorbis)"
msgid "Created"
msgstr "נוצר"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "תמונה עבור %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "קובץ PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "נקודת מבט"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "לפני×"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "ר×ש"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "צד"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "הורד מודל"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "פורמט קובץ"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "גובה ×ובייקט"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "לצערנו, ויד×ו ×–×” ×œ× ×™×¢×‘×•×“ מכיוון \n שדפדפן הרשת שלך ×œ× ×ª×•×ž×š \n ויד×ו של HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "ב×פשרותך להשיג דפדפן רשת מודרני \n שכן מסוגל לנגן ×ת ויד×ו ×–×” ב×תר <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "קובץ WebM &rlm;(VP8/Vorbis)"
@@ -1642,6 +1836,32 @@ msgstr "×›×ן ב×פשרותך לעקוב ×חר המצב של המדיה שמ×
msgid "Media in-processing"
msgstr "מדיה ב×מצע-עיבוד"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "מזהה"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "משתמש"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "×›×שר נשלח"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "×œ× ×™×“×•×¢"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1652,6 +1872,14 @@ msgstr "×ין מדיה ב×מצע-עיבוד"
msgid "These uploads failed to process:"
msgstr "העל×ות ×לה נכשלו להתעבד:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "סיבה לכישלון"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1661,6 +1889,10 @@ msgstr "×ין רשומות כושלות!"
msgid "Last 10 successful uploads"
msgstr "10 העל×ות מוצלחות ×חרונות"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "נשלח"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1668,14 +1900,14 @@ msgstr "×ין ×¨×™×©×•×ž×™× ×ž×¢×•×‘×“×™×, עדיין!"
#: mediagoblin/templates/mediagoblin/moderation/report.html:27
msgid "Sorry, no such report found."
-msgstr "לצערנו, ×œ× × ×ž×¦× ×“×™×•×•×— ×›×–×”."
+msgstr "לצערנו, דיווח נתון ×œ× × ×ž×¦×."
#: mediagoblin/templates/mediagoblin/moderation/report.html:33
msgid "Return to Reports Panel"
msgstr "חזור ×ל לוח דיווחי×"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "דווח"
@@ -1701,6 +1933,10 @@ msgid ""
" "
msgstr "\n תוכן מ×ת\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n נמחק\n "
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "סיבת דיווח:"
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1805,15 +2041,15 @@ msgstr "×œ× × ×ž×¦×ו ×“×™×•×•×—×™× ×¡×’×•×¨×™×."
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "משתמש: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "חזור ×ל לוח משתמשי×"
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
-msgstr ""
+msgstr "לצערנו, משתמש נתון ×œ× × ×ž×¦×."
#: mediagoblin/templates/mediagoblin/moderation/user.html:53
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
@@ -1825,7 +2061,7 @@ msgstr "נדרש ×ימות דו×״ל"
msgid ""
"Someone has registered an account with this username, but it still has\n"
" to be activated."
-msgstr ""
+msgstr "מישהו ×¨×©× ×—×©×‘×•×Ÿ ×¢× ×©× ×ž×©×ª×ž×© ×–×”, ×ך עדיין\nעליו לעבור ×קטיבציה."
#: mediagoblin/templates/mediagoblin/moderation/user.html:66
#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
@@ -1838,11 +2074,11 @@ msgstr "הדיוקן של %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
msgid "BANNED until %(expiration_date)s"
-msgstr ""
+msgstr "×סור עד %(expiration_date)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:72
msgid "Banned Indefinitely"
-msgstr ""
+msgstr "×סור לצמיתה"
#: mediagoblin/templates/mediagoblin/moderation/user.html:78
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
@@ -1863,76 +2099,76 @@ msgstr "דפדוף ב×וספי×"
#: mediagoblin/templates/mediagoblin/moderation/user.html:105
#, python-format
msgid "Active Reports on %(username)s"
-msgstr ""
+msgstr "×“×™×•×•×—×™× ×¤×¢×™×œ×™× ×¢×œ %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:112
msgid "Report ID"
-msgstr ""
+msgstr "מזהה דיווח"
#: mediagoblin/templates/mediagoblin/moderation/user.html:113
msgid "Reported Content"
-msgstr ""
+msgstr "תוכן מדווח"
#: mediagoblin/templates/mediagoblin/moderation/user.html:114
msgid "Description of Report"
-msgstr ""
+msgstr "תי×ור של דיווח"
#: mediagoblin/templates/mediagoblin/moderation/user.html:122
#, python-format
msgid "Report #%(report_number)s"
-msgstr ""
+msgstr "דיווח מס׳ %(report_number)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "תגובה מדווחת"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
-msgstr ""
+msgstr "ערך מדיה מדווח"
#: mediagoblin/templates/mediagoblin/moderation/user.html:142
#, python-format
msgid "No active reports filed on %(username)s"
-msgstr ""
+msgstr "×œ× ×ž×•×œ×ו ×“×™×•×•×—×™× ×¤×¢×™×œ×™× ×¢×œ %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:150
#, python-format
msgid "All reports on %(username)s"
-msgstr ""
+msgstr "כל ×”×“×™×•×•×—×™× ×¢×œ %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:155
#, python-format
msgid "All reports that %(username)s has filed"
-msgstr ""
+msgstr "כל ×”×“×™×•×•×—×™× ×שר %(username)s מיל×"
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "הפריבילגיות של %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "פריבילגיה"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "הוענקה"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "כן"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "ל×"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "×סור משתמש"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "בטל ×יסור משתמש"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
@@ -1950,10 +2186,6 @@ msgstr "\n ×›×ן ב×פשרותך לחפש ×ž×©×ª×ž×©×™× ×›×“×™ לנקוט
msgid "Active Users"
msgstr "×ž×©×ª×ž×©×™× ×¤×¢×™×œ×™×"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "מזהה"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "מתי הצטרף"
@@ -1978,20 +2210,20 @@ msgstr "הוספת המדיה שלך"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "â– ×¤×¨×¡×•× ×‘×œ×•×’ מ×ת <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "הוסף תגובה"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "הוסף ×ת תגובה זו"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "התווספה"
@@ -2008,17 +2240,17 @@ msgstr "%(collection_title)s מ×ת <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "מחק ×וסף %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "ב×מת למחוק ×וסף: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "הסר %(media_title)s מתוך %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2063,12 +2295,12 @@ msgstr "מדיה משתמש <a href=\"%(user_url)s\">%(username)s</a> ×¢× ×ª×’×
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "המדיה של <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■דפדוף במדיה של <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "תצוגת תגובה"
@@ -2118,7 +2350,7 @@ msgstr "\n ■פורסמה על ידי <a href=\"%(user_url)s\"\n
#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
msgid "File Report "
-msgstr "×ž×œ× ×“×™×•×•×—"
+msgstr "×ž×œ× ×“×™×•×•×— "
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
@@ -2183,6 +2415,14 @@ msgstr "× ×ספה בתוך"
msgid "Add to a collection"
msgstr "הוסף ×ל ×וסף"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "×”×™×¨×©× ×œ×ª×’×•×‘×•×ª"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "השתק תגובות"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2219,6 +2459,10 @@ msgstr "חדש יותר"
msgid "older"
msgstr "ישן יותר"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "מיקו×"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "דווח על מדיה"
@@ -2227,38 +2471,38 @@ msgstr "דווח על מדיה"
msgid "Tagged with"
msgstr "מתויגת ×¢×"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "×œ× ×”×™×” ניתן ×œ×§×¨×•× ×ת קובץ התמונה."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "×ופס!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "×ירעה שגי××”"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "בקשה רעה"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "הבקשה ×שר נשלחה ×ל השרת ×”×™× ×” שגויה, ×× × ×‘×—×Ÿ ×ותה היטב"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "פעולה ×œ× ×ž×•×¨×©×™×ª"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
-msgstr "צר לי דייב, ×× ×™ ×œ× ×™×›×•×œ להתיר לך לעשות ×–×ת!</p><p>ניסית לבצע פעולה ש×ינך מורשה לעשות. ×”×× × ×™×¡×™×ª למחוק ×ת כל החשבונות של ×”×ž×©×ª×ž×©×™× ×©×•×‘?"
+msgstr "צר לי דייב, ×× ×™ ×œ× ×™×›×•×œ להתיר לך לעשות ×–×ת!</p><p>ניסית לבצע פעולה ×שר ×ינך מורשה לעשות. ×”×× ×©×•×‘ ניסית למחוק ×ת כל חשבונות המשתמש?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2326,69 +2570,69 @@ msgstr "ב×פשרותך להשתמש בתחביר\n <a hre
msgid "Reason for Reporting"
msgstr "סיבת דיווח"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
-msgstr "מצטערי×, תגובות מנוטרלות."
+msgstr "לצערנו, תגובות מנוטרלות."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "×ופס, תגובתך היתה ריקה."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "תגובתך פורסמה!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "×× × ×‘×“×•×§ ×ת רשומותיך ונסה שוב."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "עליך לבחור ×ו להוסיף ×וסף"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" כבר ×§×™×™× ×‘×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" התווספה ×ל ×”×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "מחקת ×ת מדיה זו."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "בחרת למחוק מדיה של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "מחקת ×ת הפריט מן ×וסף ×–×”."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "הפריט ×œ× ×”×•×¡×¨ מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "בחרת למחוק פריט מן ×וסף של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "מחקת ×ת ×”×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "×”×וסף ×œ× ×”×•×¡×¨ מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "בחרת למחוק ×וסף של משתמש ×חר. המשך בזהירות."
diff --git a/mediagoblin/i18n/hi/mediagoblin.po b/mediagoblin/i18n/hi/mediagoblin.po
new file mode 100644
index 00000000..432d8365
--- /dev/null
+++ b/mediagoblin/i18n/hi/mediagoblin.po
@@ -0,0 +1,2681 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-18 16:03-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: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+"Generated-By: Babel 1.3\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid "An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a "
+"password set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing"
+" the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid "Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid "An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to"
+" be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were "
+"sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/hu/mediagoblin.po b/mediagoblin/i18n/hu/mediagoblin.po
new file mode 100644
index 00000000..5aa7f6c6
--- /dev/null
+++ b/mediagoblin/i18n/hu/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Hungarian (http://www.transifex.com/projects/p/mediagoblin/language/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the setting of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index bb2b6c5b..00000000
--- a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ia/mediagoblin.po
index 8e9e248f..2a774d1d 100644
--- a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ia/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Interlingua (http://www.transifex.com/projects/p/mediagoblin/language/ia/)\n"
"MIME-Version: 1.0\n"
@@ -20,70 +20,174 @@ msgstr ""
"Language: ia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titulo"
@@ -92,7 +196,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -108,11 +212,11 @@ msgstr "Etiquettas"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -140,125 +244,137 @@ msgstr "Sito web"
msgid "This address contains errors"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr ""
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Contrasigno"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr ""
@@ -289,7 +405,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -297,58 +413,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -374,28 +490,28 @@ msgstr ""
msgid "I am sure I want to delete this"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -415,7 +531,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr ""
@@ -425,7 +541,7 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr ""
@@ -540,7 +656,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -558,26 +725,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -632,7 +799,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -761,23 +928,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -925,11 +1089,7 @@ msgstr ""
msgid "Forgot your password?"
msgstr ""
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
@@ -996,7 +1156,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1009,8 +1169,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1018,39 +1178,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1074,7 +1234,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1106,26 +1266,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1149,15 +1309,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr ""
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1176,11 +1336,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1203,30 +1363,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1234,25 +1390,29 @@ msgstr ""
msgid "Media processing panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1306,7 +1466,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1397,13 +1557,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1421,6 +1581,47 @@ msgstr ""
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1446,7 +1647,7 @@ msgstr ""
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1500,19 +1701,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1525,38 +1713,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1564,70 +1752,70 @@ msgstr ""
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1641,6 +1829,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1651,6 +1865,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1660,6 +1882,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1674,7 +1900,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1700,6 +1926,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1949,10 +2179,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1980,17 +2206,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2062,12 +2288,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2182,6 +2408,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2218,6 +2452,10 @@ msgstr ""
msgid "older"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2226,38 +2464,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2325,69 +2563,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 6eb16f16..00000000
--- a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/is_IS/mediagoblin.po
index 5b48886f..c4201acc 100644
--- a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/is_IS/mediagoblin.po
@@ -1,9 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Sveinn í Felli <sv1@fellsnet.is>, 2013
+# Sveinn í Felli <sv1@fellsnet.is>, 2013, 2016.
# Tryggvi Björgvinsson <tryggvib@fsfi.is>, 2012
# Tryggvi Björgvinsson <tryggvib@fsfi.is>, 2013
# Tryggvi Björgvinsson <tryggvib@fsfi.is>, 2012-2013
@@ -11,81 +11,188 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Icelandic (Iceland) (http://www.transifex.com/projects/p/mediagoblin/language/is_IS/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2016-01-22 10:09+0000\n"
+"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
+"Language-Team: Icelandic (Iceland) "
+"(http://www.transifex.com/projects/p/mediagoblin/language/is_IS/)\n"
+"Language: is_IS\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Pootle 2.5.0\n"
"Generated-By: Babel 1.3\n"
-"Language: is_IS\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POOTLE-MTIME: 1453457382.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Því miður er nýskráning ekki leyfð á þessu svæði."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr "Því miður eru tilkynningar óvirkar á þessum vef."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "Því miður er auðkenning ekki möguleg á þessu vefsvæði."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Ógilt notandanafn eða netfang"
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Þessi reitur tekur ekki við netföngum."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "í þennan reit verður að slá inn tölvupóstfang."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Því miður er nú þegar til notandi með þetta nafn."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Því miður þá er annar notandi í kerfinu með þetta netfang skráð."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "Staðfestingarlykillinn eða notendaauðkennið er rangt."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Netfangið þitt hefur verið staðfest. Þú getur núna innskráð þig, breytt kenniskránni þinni og sent inn efni!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Staðfestingarlykillinn eða notendaauðkennið er rangt"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Þú verður að hafa innskráð þig svo við vitum hvert á að senda tölvupóstinn!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Þú hefur staðfest netfangið þitt!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Endursendi staðfestingartölvupóst"
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} bætti við {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} bætti {object} við {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} skrifaði í {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} bjó til {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} eyddi {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} mislíkaði {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} setti {object} í eftirlæti"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} fylgdi {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} líkaði {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} sendi inn {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} sendi {object} inn í {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} deildi {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} tók {object} úr eftirlætum"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} hætti að fylgja {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} hætti að líka við {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} hætti að deila {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} uppfærði {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} merkti við {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "mynd"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "athugasemd"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "albúm"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "myndskeið"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "hljóð"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "einstaklingur"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "hlutur"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titill"
@@ -94,7 +201,7 @@ msgid "Description of this work"
msgstr "Lýsing á þessu efni"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -110,11 +217,11 @@ msgstr "Efnisorð"
msgid "Separate tags by commas."
msgstr "Aðskildu efnisorðin með kommum."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Vefslóðarormur"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Vefslóðarormurinn getur ekki verið tómur"
@@ -142,125 +249,137 @@ msgstr "Vefsíða"
msgid "This address contains errors"
msgstr "Þetta netfang inniheldur villur"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Heimabær"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Senda mér tölvupóst þegar einhver bætir athugasemd við efnið mitt"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Virkja innri tilkynningar um viðburði."
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Stilling á notkunarleyfi"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Þetta verður sjálfgefna leyfið þegar þú vilt hlaða upp efni."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Þessi titill getur verið innihaldslaus"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Lýsing á þessu albúmi"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Titilhlutinn í vefslóð þessa albúms. Þú þarft vanalega ekki að breyta þessu."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Gamla lykilorðið"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Skráðu gamla lykilorðið þitt til að sanna að þú átt þennan aðgang."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Nýtt lykilorð"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Nýtt netfang"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Lykilorð"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Sláðu inn lykilorðið þitt til að sanna að þú eigir þennan aðgang."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Auðkenni"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Gildi"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Efni merkt með þessum vefslóðarormi er nú þegar til fyrir þennan notanda."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Þú ert að breyta efni annars notanda. Farðu mjög varlega."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Þú bættir við viðhenginu %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Þú getur bara breytt þinni eigin kenniskrá."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Þú ert að breyta kenniskrá notanda. Farðu mjög varlega."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Breytingar á kenniskrá vistaðar"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Aðgangsstillingar vistaðar"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Þú verður að samþykkja eyðingu á notandaaðganginum þínum."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Þú hefur nú þegar albúm sem kallast \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Albúm með þessu vefslóðarormi er nú þegar til fyrir þennan notanda."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Þú ert að breyta albúmi annars notanda. Farðu mjög varlega."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Netfangið þitt hefur verið staðfest."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Rangt lykilorð"
@@ -291,7 +410,7 @@ msgstr "Hoppa yfir \"%s\"; hefur nú þegar verið sett upp.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Gamall tengill fannst fyrir \"%s\"; fjarlægi.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -299,58 +418,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Því miður, enginn notandi með notandanafnið '{username}' er til"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -376,48 +495,50 @@ msgstr "Lýsing"
msgid "I am sure I want to delete this"
msgstr "Ég er viss um að ég vilji eyða þessu"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Jibbí jei! Það tókst að senda inn!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Vá! Það tókst að senda inn breytta bloggfærslu"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Þú eyddir blogginu."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Efninu var ekki eytt þar sem þú merktir ekki við að þú værir viss."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
+"Þú ert í þann mund að fara að eyða bloggi annars notanda. Farðu mjög "
+"varlega."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Blogginu var ekki eytt þar sem þú hefur ekki nægar heimildir."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Bæta við bloggfærslu"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Breyta bloggi"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Eyða bloggi"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Breyta"
@@ -427,17 +548,17 @@ msgstr "Breyta"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Eyða"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> Fara í listasýn </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr "Engin bloggfærsla ennþá. "
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -466,7 +587,7 @@ msgstr "Eytt algjörlega"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Búa til eða breyta bloggi"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -479,28 +600,28 @@ msgstr "Bæta við"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Búa til eða breyta bloggfærslu."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Búa til eða breyta bloggfærslu."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "Blogg eftir %(blog_owner_name)s"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Skoða"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Búa til blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr " Stjórnborð bloggs "
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
@@ -542,7 +663,69 @@ msgstr "Hvað ætlarðu að gera til að vinna úr tilkynningunni?"
msgid "What privileges will you take away?"
msgstr "Hvaða réttindi ætlarðu að taka burt?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Hvers vegna notandinn var bannaður:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Skilaboð til notanda:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+# skoða hvernig kemur út
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} fjarlægði réttindi fyrir {user} til að framkvæma {privilege}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} bannaði notandann {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "þangað til {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "ótilgreint"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} sendi viðvörunarpóst til {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} eyddi athugasemdinni."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} eyddi efnisfærslunni."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Viðvörun frá"
@@ -560,26 +743,26 @@ msgstr "Þú ert nú áskrifandi að athugasemdum „%s“!"
msgid "You will not receive notifications for comments on %s."
msgstr "Þú færð tilkynningar þegar einhver skrifar athugasemd við „%s“."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "Þú verður að gefa upp OAuth tóka (oauth_token)."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "Engin beiðni fannst."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "Því miður er skráin of stór."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "Því miður mun upphal á þessari skrá sprengja upphalshámarkið þitt."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "Því miður hefur þú náð upphalshámarki"
@@ -634,7 +817,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -699,7 +882,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "VARÚÃ:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -763,29 +946,26 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "Skoða nýlegasta efnið"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "Umsýslustýring"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
@@ -793,6 +973,9 @@ msgid ""
"\tyour web browser does not support HTML5\n"
"\taudio."
msgstr ""
+"Því miður mun þessi hljóðskrá ekki virka því \n"
+"\tvafrinn þinn styður ekki HTML5 \n"
+"\thljóðskrár."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
@@ -800,6 +983,9 @@ msgid ""
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
msgstr ""
+"Þú getur náð í nýlegan vafra sem \n"
+"\tgetur spilað hljóðskrár á <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
@@ -808,6 +994,9 @@ msgid ""
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"Því miður mun þetta myndskeið ekki virka því\n"
+" vafrinn þinn styður ekki HTML5 \n"
+" myndskeið."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -816,6 +1005,9 @@ msgid ""
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
+"Þú getur náð í nýlegan vafra sem \n"
+" sem getur spilað myndskeiðið á <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
@@ -927,11 +1119,7 @@ msgstr "Senda leiðbeiningar"
msgid "Forgot your password?"
msgstr "Gleymdirðu lykilorðinu þínu?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Staðsetning"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Skoða á <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -942,11 +1130,11 @@ msgstr "Skráðu þig inn til að búa til aðgang!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Lýsigögn"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "Breyta lýsigögnum"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
@@ -998,7 +1186,7 @@ msgstr "Ãframsendingarvefslóðin fyrir forritin, þessi reitur\n er
msgid "This field is required for public clients"
msgstr "Þessi reitur er nauðsynlegur fyrir opinbera biðlara"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Biðlarinn {0} hefur verið skráður!"
@@ -1011,8 +1199,8 @@ msgid "Your OAuth clients"
msgstr "OAuth-biðlararnir þínir"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Því miður er annar aðgangur nú þegar skráður fyrir þetta OpenID auðkenni."
@@ -1020,39 +1208,39 @@ msgstr "Því miður er annar aðgangur nú þegar skráður fyrir þetta OpenID
msgid "OpenID"
msgstr "OpenID auðkenni"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Því miður fannst OpenID netþjónninn ekki"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Engin OpenID þjónusta fannst fyrir „%s“"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Staðfesting á „%s“ mistóksts: „%s“"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Hætt við staðfestingu"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Það tókst að vista OpenID vefslóðina þína."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "Þú getur ekki eytt einu OpenID vefslóðinni nema þú hafir skráð lykilorð"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Þetta OpenID auðkenni er ekki skráð á þennan aðgang."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "Það tókst að fjarlægja OpenID auðkennið."
@@ -1076,7 +1264,7 @@ msgstr "OpenID auðkenni"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1108,26 +1296,26 @@ msgstr "...eða nýskráðu þig með OpenID auðkenni!"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Því miður er annar aðgangur nú þegar skráður fyrir þetta „Persona“ netfang."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Það tókst að fjarlægja „Persona“ netfangið."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "Þú getur ekki eytt eina „Persona“ netfanginu þínu nema þú hafir skráð lykilorð."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Þetta „Persona“ netfang er ekki skráð fyrir þennan aðgang."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "Því miður er annar aðgangur nú þegar skráður fyrir þetta „Persona“ netfang."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Það tókst að vista „Persona“ netfangið þitt."
@@ -1151,15 +1339,15 @@ msgstr "...eða skráðu þig inn með „Persona“!"
msgid "Or register with Persona!"
msgstr "...eða nýskráðu þig með „Persona“!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Ógild skrá gefin fyrir þessa margmiðlunartegund."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "Það tókst ekki að afrita yfir í almennu geymsluna."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "Nothæf keyrsluskrá fannst ekki"
@@ -1178,11 +1366,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "Þú getur notað\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> fyrir stílsnið."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Þú verður að gefa upp skrá."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Albúmið \"%s\" var búið til!"
@@ -1205,56 +1393,56 @@ msgstr "Stjórnandi hefur bannað þig"
msgid "until %(until_when)s"
msgstr "þangað til %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "ótilgreint"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Staðfestu netfangið þitt!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "útskrá"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Notandaaðgangur: <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Breyta stillingum notandaaðgangs"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
msgid "Media processing panel"
-msgstr "Margmiðlunarvinnsluskiki"
+msgstr "Margmiðlunarvinnslustýring"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Skrá út"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Senda inn efni"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Búa til nýtt albúm"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Notendastýring"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Tilkynningastýring"
@@ -1308,8 +1496,8 @@ msgid "Authorization Complete"
msgstr "Heimild klár"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Afritaðu og límdu þetta í forritið þitt:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -1399,13 +1587,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Breyti viðhengjum við: %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Viðhengi"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Bæta við viðhengi"
@@ -1423,6 +1611,47 @@ msgstr "Vista breytingar"
msgid "Changing %(username)s's email"
msgstr "Breyti netfangi fyrir notandann: %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "Fyrir %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1448,7 +1677,7 @@ msgstr "Breyti notandaaðgangsstillingum fyrir: %(username)s"
msgid "Delete my account"
msgstr "Eyða aðganginum mínum"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Netfang"
@@ -1502,19 +1731,6 @@ msgstr "Hi,\n\nVið vildum staðfesta að þú værir notandinn „%(username)sâ
msgid "New comments"
msgstr "Nýjar athugasemdir"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "Fyrir %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Merkja allt lesið"
@@ -1527,38 +1743,38 @@ msgstr "Merkja allt lesið"
msgid "Media tagged with: %(tag_name)s"
msgstr "Efni merkt með: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Sækja"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Upphafleg skrá"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Því miður mun þessi hljóðskrá ekki virka því \n\tvafrinn þinn styður ekki HTML5 \n\thljóðskrár."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Þú getur náð í nýlegan vafra sem \n\tgetur spilað hljóðskrár á <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Upphaflega skráin"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM skrá (Vorbis víxlþjöppun)"
@@ -1566,70 +1782,70 @@ msgstr "WebM skrá (Vorbis víxlþjöppun)"
msgid "Created"
msgstr "Búið til"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Mynd fyrir %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF skrá"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Fjarvídd"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Framhlið"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Toppur"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Hlið"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Hala niður líkani"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Skráarsnið"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Hæð hlutar"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Því miður mun þetta myndskeið ekki virka því\n vafrinn þinn styður ekki HTML5 \n myndbönd."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Þú getur náð í nýlegan vafra sem \n sem getur spilað myndskeiðið á <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "WebM skrá (VP8/Vorbis)"
@@ -1643,6 +1859,32 @@ msgstr "Hér getur þú fylgst með margmiðlunarefni sem verið er að vinna á
msgid "Media in-processing"
msgstr "Efni í vinnslu"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "Auðkenni"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Notandi"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1653,6 +1895,14 @@ msgstr "Ekkert efni í vinnslu"
msgid "These uploads failed to process:"
msgstr "Það mistókst að fullvinna þessar innsendingar:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1662,6 +1912,10 @@ msgstr "Engar bilaðar innsendingar!"
msgid "Last 10 successful uploads"
msgstr "Síðustu 10 árangursríku innsendingarnar"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Sent"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1676,7 +1930,7 @@ msgid "Return to Reports Panel"
msgstr "Fara aftur í tilkynningastýringu"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Tilkynning"
@@ -1702,6 +1956,10 @@ msgid ""
" "
msgstr "\n EFNI SEM\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n SETTI INN VAR EYTT\n "
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1810,7 +2068,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "Fara aftur á notendastýringu"
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
@@ -1868,7 +2126,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:112
msgid "Report ID"
-msgstr ""
+msgstr "Auðkenni skýrslu"
#: mediagoblin/templates/mediagoblin/moderation/user.html:113
msgid "Reported Content"
@@ -1885,7 +2143,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "Tilkynnt athugasemd"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
@@ -1909,31 +2167,31 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "Réttindi fyrir %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Réttindi"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "Veitt"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Já"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Nei"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Banna notanda"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "Taka notanda úr banni"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
@@ -1951,10 +2209,6 @@ msgstr "\n Hér getur þú skoðað notendur til að gera refsigaðgerðir ga
msgid "Active Users"
msgstr "Virkir notendur"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "Auðkenni"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "Skráði sig"
@@ -1979,20 +2233,20 @@ msgstr "Sendu inn efni"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "■Bloggfærsla eftir <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Bæta við athugasemd"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Senda inn þessa athugasemd"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Bætt við"
@@ -2009,17 +2263,17 @@ msgstr "%(collection_title)s sem <a href=\"%(user_url)s\">%(username)s</a> bjó
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "Eyða %(collection_title)s albúminu"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Virkilega eyða: (title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "Fjarlægja %(media_title)s úr %(collection_title)s albúminu"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2064,12 +2318,12 @@ msgstr "Efni sem <a href=\"%(user_url)s\">%(username)s</a> á og er merkt með <
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "Efni sem <a href=\"%(user_url)s\">%(username)s</a> á"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■Skoða efnið sem <a href=\"%(user_url)s\">%(username)s</a> setti inn"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Útlit athugasemdar"
@@ -2184,6 +2438,14 @@ msgstr "Sett í albúm"
msgid "Add to a collection"
msgstr "Setja í albúm"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Gerast áskrifandi að athugasemdum"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Þagga niður í athugasemdum"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2220,6 +2482,10 @@ msgstr "nýrri"
msgid "older"
msgstr "eldri"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Staðsetning"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "Tilkynna efni"
@@ -2228,38 +2494,38 @@ msgstr "Tilkynna efni"
msgid "Tagged with"
msgstr "Merkt með"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Gat ekki lesið myndskrána."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Obbosí!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Villa kom upp"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Ekki nógu góð beiðni"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "Beiðnin sem var send til netþjónsins er ógild, vinsamlegast athugaðu hana aftur"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Aðgerð ekki leyfileg"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Fyrirgefðu Davíð. Ég get ekki leyft þér að gera þetta!</p></p>Þú reyndir að framkvæma aðgerð sem þú hefur ekki leyfi til að gera. Varstu að reyna að eyða öllum notendareikningum aftur?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2327,69 +2593,69 @@ msgstr "Þú getur notað\n <a href=\"http://daringfireball
msgid "Reason for Reporting"
msgstr "Ãstæður fyrir tilkynningu"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Því miður, athugasemdir eru óvirkar."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Obbosí! Athugasemdin þín var innihaldslaus."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Athugasemdin þín var skráð!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Vinsamlegast kíktu á færslurnar þínar og reyndu aftur."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Þú verður að velja eða búa til albúm"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" er nú þegar í albúminu \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" sett í albúmið \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Þú eyddir þessu efni."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Þú ert í þann mund að fara að eyða efni frá öðrum notanda. Farðu mjög varlega."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Þú tókst þetta efni úr albúminu."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Þetta efni var ekki fjarlægt af því að þú merktir ekki við að þú værir viss."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Þú ert í þann mund að fara að eyða efni úr albúmi annars notanda. Farðu mjög varlega."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Þú eyddir albúminu \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "Þessu albúmi var ekki eytt vegna þess að þu merktir ekki við að þú værir viss."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Þú ert í þann mund að fara að eyða albúmi annars notanda. Farðu mjög varlega."
diff --git a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 9abe7043..00000000
--- a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/it/mediagoblin.po
index 9c31489d..7b311f7a 100644
--- a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/it/mediagoblin.po
@@ -1,94 +1,205 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Damiano, 2013
+# Damtux, 2013
# Francesco Apruzzese <cescoap@gmail.com>, 2012
# Gaetano <gaedeb01@gmail.com>, 2013
# pikappa469 <pikappa469@alice.it>, 2011
# nunni <robi@nunnisoft.ch>, 2011
-# Damiano, 2013
-# Damiano, 2012
+# Damtux, 2013-2014
+# Damtux, 2012
+# Elinvention <elia.argentieri@openmailbox.org>, 2016.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/mediagoblin/language/it/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2016-02-11 00:39+0000\n"
+"Last-Translator: Elinvention <elia.argentieri@openmailbox.org>\n"
+"Language-Team: Italian "
+"(http://www.transifex.com/projects/p/mediagoblin/language/it/)\n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
-"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1455151186.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Spiacente, la registrazione è disabilitata su questa istanza."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr "Spiacente, le segnalazioni sono disabilitate in questa istanza."
+msgstr "Spiacente, le segnalazioni sono disabilitate su questa istanza."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
-msgstr "Mi dispiace, l'autenticazione è disabilitata in questa istanza."
+msgstr "Mi dispiace, l'autenticazione è disabilitata su questa istanza."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Nome utente o indirizzo email non valido."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Questo campo non accetta indirizzi email."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Questo campo richiede un indirizzo email."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Spiacente, esiste già un utente con quel nome."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Siamo spiacenti, un utente con quell'indirizzo email esiste già."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "La chiave di verifica o l'id utente è sbagliato."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Il tuo indirizzo email è stato verificato. Ora puoi accedere, modificare il tuo profilo e caricare immagini!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "La chiave di verifica o l'id utente è sbagliato"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Devi effettuare l'accesso così possiamo sapere a chi inviare l'email!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Hai già verificato il tuo indirizzo email!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Email di verifica rispedita."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} ha aggiunto {object}"
+
+#: mediagoblin/db/mixin.py:405
+#, fuzzy
+msgid "{username} added {object} to {target}"
+msgstr "{username} ha aggiunto {object} in {target}"
+
+#: mediagoblin/db/mixin.py:407
+#, fuzzy
+msgid "{username} authored {object}"
+msgstr "{username} ha creato {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} ha creato {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} ha eliminato {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "A {username} non piace {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "A {username} piace {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} segue {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "A {username} piace {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} ha pubblicato {object}"
+
+#: mediagoblin/db/mixin.py:416
+#, fuzzy
+msgid "{username} posted {object} to {target}"
+msgstr "{username} ha pubblicato {object} in {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} ha condiviso {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} ha tolto {object} dai preferiti"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} ha smesso di seguire {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "A {username} non piace più {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} non condivide più {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} ha aggiornato {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} ha etichettato {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "un'immagine"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "un commento"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "una collezione"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "un video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "una persona"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "un oggetto"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titolo"
@@ -97,7 +208,7 @@ msgid "Description of this work"
msgstr "Descrizione di questo lavoro"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -107,17 +218,17 @@ msgstr "Puoi usare il\n <a href=\"http://daringfireball.net
#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
#: mediagoblin/submit/forms.py:45
msgid "Tags"
-msgstr "Tags"
+msgstr "Etichette"
#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
-msgstr "Separa i tag con la virgola."
+msgstr "Separa le etichette con la virgola."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Titolo"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Il titolo non può essere vuoto"
@@ -145,125 +256,137 @@ msgstr "Sito web"
msgid "This address contains errors"
msgstr "Questo indirizzo contiene errori"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Città natale"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Inviami messaggi email quando altre persone commentano i miei file multimediali"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Abilita le notifiche degli eventi nel sito."
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Licenza preferita"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Questa sarà la tua licenza predefinita nei moduli di caricamento dei file."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Il titolo non può essere vuoto"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Descrizione di questa raccolta"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Il titolo fa parte dell'indirizzo di questa raccolta. Nella maggior parte dei casi non c'è bisogno di cambiarlo."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Password vecchia"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Inserisci la vecchia password per dimostrare di essere il proprietario dell'account."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Nuova password"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Nuovo indirizzo email"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Password"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Inserisci la tua password per dimostrare di essere il proprietario di questo account."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identificatore"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Valore"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Questo utente ha già un elemento con quel titolo."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Stai modificando file multimediali di un altro utente. Procedi con attenzione."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Hai aggiunto l'allegato %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Puoi modificare solo il tuo profilo."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Stai modificando il profilo di un utente. Procedi con attenzione."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Cambiamenti del profilo salvati"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Impostazioni del profilo salvate"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Applicazione sconosciuta, non in grado di rimuovere l'autorizzazione"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "L'applicazione non è più autorizzata"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Devi confermare l'eliminazione del tuo account."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Hai già una raccolta che si chiama \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Questo utente ha già una raccolta con quel titolo."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Stai modificando la raccolta di un altro utente. Procedi con cautela."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Il tuo indirizzo email è stato verificato."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Password errata"
@@ -272,90 +395,106 @@ msgid "Cannot link theme... no theme set\n"
msgstr "Non riesco a collegarmi al tema... nessun tema impostato\n"
#: mediagoblin/gmg_commands/assetlink.py:73
+#, fuzzy
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "Nessuna cartella di file per questo tema\n"
#: mediagoblin/gmg_commands/assetlink.py:76
msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
+msgstr "Comunque, un vecchio collegamento alla cartella è stato trovato e rimosso.\n"
#: mediagoblin/gmg_commands/assetlink.py:112
#, python-format
msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
+msgstr "Impossibile collegare \"%s\": %s esiste e non è un collegamento simbolico\n"
#: mediagoblin/gmg_commands/assetlink.py:119
#, python-format
msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
+msgstr "Salto \"%s\": già configurato.\n"
#: mediagoblin/gmg_commands/assetlink.py:124
#, python-format
msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
+msgstr "Vecchio collegamento per \"%s\" rimosso.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
+"Per maggiori informazioni su come utilizzare correttamente questo\n"
+"script (e come formattare il file csv di metadati), leggi la pagina di\n"
+"documentazione di Mediagoblin sul caricamento da linea di comando\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "Nome dell'utente a cui appartengono questi file multimediali"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "Percorso al file csv contenente i metadati."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Nessun utente chiamato \"{username}\" esiste"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "File {path} non trovato. Usa -h per l'aiuto"
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
+"Errore con il file \"{media_id}\" valore \"{error_path}\": {error_msg}\n"
+"I metadati non sono stati caricati."
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
+"Errore: impossibile accedere al file locale {filename}.\n"
+"{filename} non verrà caricato."
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
+"File {filename} caricato con successo!\n"
+"Puoi assicurarti che la procedura abbia avuto successo controllando nel\n"
+"pannello di elaborazione file multimediali sulla tua istanza."
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
+"Errore: questo file ha dimensioni che superano il limite impostato per "
+"questo sito."
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
+"Errore: questo file farà eccedere il limite di caricamento per questo "
+"utente."
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "Errore: questo utente ha già superato la sua quota di caricamento."
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "{files_uploaded} di {files_attempted} file inviati con successo"
#: mediagoblin/meddleware/csrf.py:134
msgid ""
@@ -379,48 +518,50 @@ msgstr "Descrizione"
msgid "I am sure I want to delete this"
msgstr "Sono sicuro di volerlo eliminare"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Evviva! Caricato!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Evviva! Le modifiche sono state pubblicate"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
+#, fuzzy
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Hai cancellato il blog."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Il file non è stato eliminato perchè non hai confermato di essere sicuro."
+msgstr ""
+"Il file non è stato eliminato perché non hai confermato di essere sicuro."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "Stai per cancellare il blog di un altro utente. Procedi con cautela."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Il blog non è stato cancellato perché non hai i permessi richiesti."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Aggiungi un articolo"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Modifica Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Elimina Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Modifica"
@@ -430,17 +571,17 @@ msgstr "Modifica"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Elimina"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> Passa alla visualizzazione a lista </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr "Ancora nessun articolo dal blog."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -469,7 +610,7 @@ msgstr "Elimina definitivamente"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Crea/Modifica un Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -482,32 +623,33 @@ msgstr "Aggiungi"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Crea/Modifica un articolo."
+# duplicate?
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Crea/Modifica un articolo."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "Blog di %(blog_owner_name)"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Visualizza"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Crea un Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr "Cruscotto del Blog"
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
-msgstr ""
+msgstr "Errore di unoconv. Controlla il file di log"
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
@@ -519,7 +661,7 @@ msgstr "Togli il privilegio"
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr "Banna l'utente"
+msgstr "Bandisci l'utente"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
@@ -531,11 +673,11 @@ msgstr "Elimina il contenuto"
#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
-msgstr "L'utente verrà bannato fino al:"
+msgstr "L'utente verrà bandito fino al:"
#: mediagoblin/moderation/forms.py:57
msgid "Why are you banning this User?"
-msgstr "Perché stai bannando questo Utente?"
+msgstr "Perché stai bandendo questo Utente?"
#: mediagoblin/moderation/forms.py:109
msgid "What action will you take to resolve the report?"
@@ -545,7 +687,68 @@ msgstr "Quali azioni intraprenderai per risolvere il problema?"
msgid "What privileges will you take away?"
msgstr "Quali privilegi toglierai?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Motivazione del bando:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Messaggio all'utente:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Risoluzione del contenuto:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} ha tolto i privilegi {privilege} a {user}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} ha bandito l'utente {user} fino al {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "fino al {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "indefinitamente"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} ha inviato una email all'utente {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"Il moderatore {mod} ha cancellato il commento."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"Il moderatore {mod} ha cancellato il file multimediale."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Avvertimento da parte di"
@@ -554,53 +757,54 @@ msgid "commented on your post"
msgstr "ha commentato il tuo post"
#: mediagoblin/notifications/views.py:35
-#, python-format
+#, fuzzy, python-format
msgid "Subscribed to comments on %s!"
-msgstr ""
+msgstr "Sottoscritto ai commenti il %s!"
#: mediagoblin/notifications/views.py:48
#, python-format
msgid "You will not receive notifications for comments on %s."
-msgstr ""
+msgstr "Non riceverai notifiche per i commenti su %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "Devi specificare un oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+#, fuzzy
msgid "No request token found."
-msgstr ""
+msgstr "Nessun token di richiesta trovato."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "Spiacente, il file è troppo grande."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "Spiacente, caricando questo file supereresti il tuo limite di memoria."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "Spiacente, hai raggiunto il limite di memoria disponibile."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "Inserisci l'URL del file da mettere in primo piano"
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Primario"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Secondario"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Terziario"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
@@ -608,13 +812,14 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Come funziona?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "Come mettere i file in primo piano?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+#, fuzzy
msgid ""
"\n"
" Go to the page of the media entry you want to feature. Copy it's URL and\n"
@@ -626,10 +831,21 @@ msgid ""
" displayed on the front page.\n"
" "
msgstr ""
+"\n"
+"Vai alla pagine del file che vuoi mettere in primo piano. Copia il suo URL e\n"
+"poi incollalo in una nuova riga nell'area di testo qua sopra. Dovrebbe "
+"esserci\n"
+"soltanto un url per riga. L'url che incolli nell'area di testo dovrebbe "
+"essere\n"
+"sotto l'intestazione descrivendo quanto importante sarà (sia Primaria,\n"
+"Secondaria che Terziaria). Una volta che tutti i file che vuoi mettere in "
+"primopiano sono nell'area di testo, premi sul pulsante Invia e i tuoi file "
+"dovrebbero\n"
+"essere mostrati in prima pagina.\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "C'è un altro modo di gestire i file in primo piano?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -637,7 +853,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -654,8 +870,11 @@ msgid ""
msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+#, fuzzy
msgid "What is a Primary Feature? What is a Secondary Feature?"
msgstr ""
+"Che cos'è una Caratteristica Primaria? Che cos'è una Caratteristica "
+"Secondaria?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
@@ -702,7 +921,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "ATTENZIONE:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -741,7 +960,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
msgid "Promote"
-msgstr ""
+msgstr "Promuovi"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
msgid ""
@@ -760,31 +979,31 @@ msgstr "File multimediali più recenti"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
-msgstr ""
+msgstr "Non c'è niente è in primo piano per il momento."
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
+"Se vuoi mettere un file in primo piano\n"
+"vai sulla pagina di quel file e premi sul pulsante\n"
+"che dice <a class=\"button_action\">In Primo Piano</a>"
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "Guarda i file multimediali più recenti"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
@@ -811,6 +1030,8 @@ msgid ""
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"Spiacenti, questo video non funzionerà perché\n"
+"il tuo browser non supporta i video HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -851,6 +1072,8 @@ msgid ""
"If that email address (case sensitive!) is registered an email has been sent"
" with instructions on how to change your password."
msgstr ""
+"Se l'indirizzo fornito (attenzione alle maiuscole) è registrato, un email è "
+"stata inviata con le istruzioni su come cambiare la tua password."
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
@@ -865,7 +1088,9 @@ msgstr "Ti è stata inviata un'email con le istruzioni per cambiare la tua passw
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr "Impossibile inviare l'email di recupero password perchè il tuo nome utente è inattivo o il tuo indirizzo email non è stato verificato."
+msgstr ""
+"Impossibile inviare l'email di recupero password perché il tuo nome utente è "
+"inattivo o il tuo indirizzo email non è stato verificato."
#: mediagoblin/plugins/basic_auth/views.py:123
msgid "The user id is incorrect."
@@ -930,11 +1155,7 @@ msgstr "Invia istruzioni"
msgid "Forgot your password?"
msgstr "Hai dimenticato la tua password?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Posizione"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Visualizza su <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -945,11 +1166,11 @@ msgstr "Iscriviti per creare un account!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Metadati"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "Modifica Metadati"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
@@ -1001,7 +1222,7 @@ msgstr "L'URI di reindirizzamento per le applicazioni, questo campo\nè <strong>
msgid "This field is required for public clients"
msgstr "Questo campo è richiesto per i client pubblici"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Il client {0} è stato registrato!"
@@ -1014,8 +1235,8 @@ msgid "Your OAuth clients"
msgstr "I tuoi client OAuth"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Mi dispiace, esiste già un account registrato con quell'OpenID."
@@ -1023,39 +1244,39 @@ msgstr "Mi dispiace, esiste già un account registrato con quell'OpenID."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Mi dispiace, il server OpenID non è stato trovato"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Nessun servizio OpenID è stato trovato per %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Verifica di %s fallita: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Verifica annullata"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Il tuo url OpenID è stato salvato con successo."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "Non puoi eliminare il tuo unico URL OpenID se prima non hai impostato una password"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Quell'OpenID non è registrato a questo account."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID è stato rimosso con successo."
@@ -1079,7 +1300,7 @@ msgstr "Gli OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1111,26 +1332,26 @@ msgstr "O registrati con OpenID!"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Mi dispiace, esiste già un account registrato con quell'indirizzo email Persona."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "L'indirizzo email Persona è stato rimosso con successo."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "Non puoi eliminare il tuo unico indirizzo email Persona se prima non hai impostato una password."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Quell'indirizzo email Persona non è registrato in questo account."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "Mi dispiace, esiste già un account registrato con quell'indirizzo email Persona."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Il tuo indirizzo email Persona è stato salvato con successo."
@@ -1154,17 +1375,18 @@ msgstr "O accedi con Persona!"
msgid "Or register with Persona!"
msgstr "O registrati con Persona!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "File non valido per il tipo di file multimediale indicato."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
+#, fuzzy
msgid "An acceptable processing file was not found"
-msgstr ""
+msgstr "Un file processabile accettabile non è stato trovato"
#: mediagoblin/submit/forms.py:30
msgid "Max file size: {0} mb"
@@ -1181,11 +1403,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "Puoi utilizzare il\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> per la formattazione."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Devi specificare un file."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Raccolta \"%s\" aggiunta!"
@@ -1208,30 +1430,26 @@ msgstr "Sei stato bannato"
msgid "until %(until_when)s"
msgstr "fino al %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "indefinitamente"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Verifica la tua email!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "esci"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Account di <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Cambia le impostazioni dell'account"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1239,25 +1457,29 @@ msgstr "Cambia le impostazioni dell'account"
msgid "Media processing panel"
msgstr "Pannello di elaborazione file multimediali"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Esci"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Aggiungi file multimediali"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Crea una nuova raccolta"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Poteri di moderazione:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Pannello di gestione degli utenti"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Pannello di gestione delle segnalazioni"
@@ -1311,8 +1533,9 @@ msgid "Authorization Complete"
msgstr "Autorizzazione Completata"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copia e incolla questo nel tuo client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+"Copia e incolla questo <strong>codice di verifica</strong> nel tuo client:"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -1382,13 +1605,17 @@ msgid ""
"\n"
" >Create an account at this site</a>\n"
" or"
-msgstr ""
+msgstr "\n>Crea un account in questo sito</a>\noppure"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
msgstr ""
+"\n"
+"<a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Configura MediaGoblin sul tuo "
+"server</a>"
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -1402,13 +1629,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Stai modificando gli allegati di %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Allegati"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Aggiungi allegato"
@@ -1426,6 +1653,47 @@ msgstr "Salva le modifiche"
msgid "Changing %(username)s's email"
msgstr "Stai cambiando l'email di %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Non ci sono applicazioni autorizzate."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s fa"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1451,7 +1719,7 @@ msgstr "Stai cambiando le impostazioni dell'account di %(username)s"
msgid "Delete my account"
msgstr "Elimina il mio account"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Email"
@@ -1473,7 +1741,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "MetaDati"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
@@ -1481,7 +1749,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "Aggiorna i metadati"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
@@ -1505,19 +1773,6 @@ msgstr "Salve,\n\nVogliamo verificare che tu sia %(username)s. Se è così, allo
msgid "New comments"
msgstr "Nuovi commenti"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s fa"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Segna tutti come letti"
@@ -1530,38 +1785,41 @@ msgstr "Segna tutti come letti"
msgid "Media tagged with: %(tag_name)s"
msgstr "File taggati con: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Scarica"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Originale"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Spiacente ma è impossibile leggere questo file audio perché\n\til tuo browser web non supporta l'HTML5 \n\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Puoi scaricare un browser web moderno,\n\t in grado di leggere questo file audio, qui <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Puoi ottenere un browser web moderno\n"
+"che può riprodurre audio a <a href=\"http://getfirefox.com\">\n"
+"http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "File originario"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "File WebM (codec Vorbis)"
@@ -1569,70 +1827,70 @@ msgstr "File WebM (codec Vorbis)"
msgid "Created"
msgstr "Creato"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
-msgstr ""
+msgstr "Immagine per %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "File PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Prospettiva"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Prospetto"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Pianta"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Lato"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Scarica il modello"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Formato del File"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Altezza Oggetto"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Mi dispiace, questo video non funzionerà perché\n il tuo browser web non supporta i video in\n HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Qui <a href=\"http://getfirefox.com\">http://getfirefox.com</a>\npuoi scaricare un browser web moderno, in grado di visualizzare\nquesto video!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "File WebM (VP8/Vorbis)"
@@ -1646,6 +1904,32 @@ msgstr "Qui puoi seguire lo stato dei file multimediali in fase di elaborazione
msgid "Media in-processing"
msgstr "File multimediali in elaborazione"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Utente"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Inviato alle"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Processo di transcodifica"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Sconosciuto"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1656,6 +1940,14 @@ msgstr "Nessun file multimediale in elaborazione"
msgid "These uploads failed to process:"
msgstr "L'elaborazione di questi file caricati è fallita:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Ragione del fallimento"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadati del fallimento"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1665,6 +1957,10 @@ msgstr "Nessuna elaborazione fallita!"
msgid "Last 10 successful uploads"
msgstr "Ultimi 10 caricamenti riusciti"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1679,7 +1975,7 @@ msgid "Return to Reports Panel"
msgstr "Ritorna al Pannello Segnalazioni"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Segnala"
@@ -1705,6 +2001,10 @@ msgid ""
" "
msgstr "\nIL CONTENUTO DI\n<a href=\"%(user_url)s\"> %(user_name)s</a>\nÈ STATO ELIMINATO\n "
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Ragione del rapporto:"
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1730,7 +2030,7 @@ msgstr "Non puoi agire contro un amministratore"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
msgid "Report panel"
-msgstr ""
+msgstr "Pannello rapporti"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
msgid ""
@@ -1738,6 +2038,8 @@ msgid ""
" Here you can look up open reports that have been filed by users.\n"
" "
msgstr ""
+"\n"
+"Qua puoi controllare i rapporti che sono stati lasciati dagli utenti.\n"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
msgid "Active Reports Filed"
@@ -1750,7 +2052,7 @@ msgstr "Colpevole"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
msgid "When Reported"
-msgstr ""
+msgstr "Riportato il"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
@@ -1780,7 +2082,7 @@ msgstr "\nSegnalazione Elem. Multimediale #%(report_id)s\n "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
msgid "No open reports found."
-msgstr ""
+msgstr "Nessun rapporto aperto trovato."
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
msgid "Closed Reports"
@@ -1788,7 +2090,7 @@ msgstr "Segnalazioni Chiuse"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
msgid "Resolved"
-msgstr ""
+msgstr "Risolto"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
msgid "Action Taken"
@@ -1804,20 +2106,20 @@ msgstr "\nSegnalazione Chiusa #%(report_id)s\n "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
msgid "No closed reports found."
-msgstr ""
+msgstr "Nessun rapporto chiuso trovato."
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "Utente: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "Ritorna al pannello dell'utente."
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
-msgstr ""
+msgstr "Spiacenti, utente non trovato."
#: mediagoblin/templates/mediagoblin/moderation/user.html:53
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
@@ -1884,11 +2186,11 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:122
#, python-format
msgid "Report #%(report_number)s"
-msgstr ""
+msgstr "Rapporto #%(report_number)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "Commento riportato"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
@@ -1902,41 +2204,41 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:150
#, python-format
msgid "All reports on %(username)s"
-msgstr ""
+msgstr "Tutti i rapporti su %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:155
#, python-format
msgid "All reports that %(username)s has filed"
-msgstr ""
+msgstr "Tutti i rapporti segnalati da %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "Privilegi di %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Privilegio"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "Concesso"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Sì"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "No"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Bandisci Utente"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "Sbandisci utente"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
@@ -1954,13 +2256,9 @@ msgstr "\nQui puoi cercare gli utenti per intraprendere azioni punitive nei loro
msgid "Active Users"
msgstr "Utenti Attivi"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
-msgstr ""
+msgstr "Data di registrazione"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
msgid "# of Comments Posted"
@@ -1982,20 +2280,20 @@ msgstr "Aggiungi il tuo file multimediale"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "â– Articolo di <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Aggiungi un commento"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Aggiungi questo commento"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Aggiunto"
@@ -2012,17 +2310,17 @@ msgstr "%(collection_title)s di <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "Cancella la collezione %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Vuoi davvero cancellare la collezione: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "Rimuovi %(media_title)s da %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2067,12 +2365,12 @@ msgstr "File multimediali di <a href=\"%(user_url)s\">%(username)s</a> con tag <
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "File multimediali di <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– Stai guardando i file multimediali di <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Anteprima Commento"
@@ -2122,7 +2420,7 @@ msgstr "\nâ– Pubblicato da <a href=\"%(user_url)s\"\nclass=\"comment_authorlink
#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
msgid "File Report "
-msgstr ""
+msgstr "Invia Segnalazione "
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
@@ -2187,6 +2485,14 @@ msgstr "Inserito in"
msgid "Add to a collection"
msgstr "Aggiungi a una raccolta"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Sottoscriviti ai commenti"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Silenzia i commenti"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2223,46 +2529,50 @@ msgstr "più recente"
msgid "older"
msgstr "più vecchio"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Posizione"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
-msgstr ""
+msgstr "Segnala media"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
msgstr "Taggato con"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Impossibile leggere il file immagine."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Oops!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Si è verificato un errore"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Richiesta Non Valida"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "La richiesta inviata al server non è valida, per favore ricontrolla"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Operazione non consentita"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Scusa Dave, non posso lasciartelo fare!</p><p>Hai cercato di eseguire una funzione non autorizzata. Stavi provando a eliminare di nuovo tutti gli account utente?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2295,7 +2605,7 @@ msgstr "minuto"
#: mediagoblin/user_pages/forms.py:23
msgid "Comment"
-msgstr ""
+msgstr "Commenta"
#: mediagoblin/user_pages/forms.py:25
msgid ""
@@ -2330,69 +2640,69 @@ msgstr "Puoi usare il\n<a href=\"http://daringfireball.net/projects/markdown/bas
msgid "Reason for Reporting"
msgstr "Motivazione della Segnalazione"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Mi dispiace, i commenti sono disabilitati."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Oops, il tuo commento era vuoto."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Il tuo commento è stato aggiunto!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Per favore controlla i tuoi elementi e riprova."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Devi selezionare o aggiungere una raccolta"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" è già nella raccolta \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" aggiunto alla raccolta \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Hai eliminato il file."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Stai eliminando un file multimediale di un altro utente. Procedi con attenzione."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Hai eliminato l'elemento dalla raccolta."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "L'elemento non è stato eliminato perchè non hai confermato di essere sicuro."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Stai eliminando un elemento dalla raccolta di un altro utente. Procedi con cautela."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Hai eliminato la raccolta \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "La raccolta non è stata eliminata perchè non hai confermato di essere sicuro."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Stai eliminando la raccolta di un altro utente. Procedi con cautela."
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 69fc6ea0..00000000
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 99ed0cd7..00000000
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1849 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Avery <averym@gmail.com>, 2011
-# ayleph <ayleph@thisshitistemp.com>, 2014
-# parlegon <parlegon@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-05-23 22:31+0000\n"
-"Last-Translator: ayleph <ayleph@thisshitistemp.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/mediagoblin/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ç™»éŒ²ã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚"
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr ""
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ãã®åå‰ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr ""
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr ""
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "メアドãŒç¢ºèªã•れã¦ã„ã¾ã™ã€‚ã“れã§ã€ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãƒ—ロファイルを編集ã—ã€ç”»åƒã‚’æå‡ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "検証キーã¾ãŸã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒé–“é•ã£ã¦ã„ã¾ã™"
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr ""
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr ""
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "検証メールをå†é€ã—ã¾ã—ãŸã€‚"
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "タイトル"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "ã‚¿ã‚°"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "スラグ"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "スラグã¯å¿…è¦ã§ã™ã€‚"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "自己紹介"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "URL"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "旧パスワード"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "新パスワード"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr ""
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "パスワード"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr ""
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "ãã®ã‚¹ãƒ©ã‚°ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã¯ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr ""
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr ""
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ロファイルを編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr ""
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr ""
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr ""
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr ""
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr ""
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr ""
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr ""
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr ""
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr ""
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr ""
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr ""
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "ユーザーID"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "メールアドレス"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "ユーザーIDã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "ユーザーIDã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "パスワードã®å¤‰æ›´ãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "ã¾ã ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "ã“ã“ã§ä½œæˆï¼"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "パスワードを変更ã—ã¾ã™ã€‚"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "パスワードを忘れã¾ã—ãŸã‹ï¼Ÿ"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "追加"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr ""
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "削除"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "ログイン"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "ログインã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "ファイル"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "ファイルをæä¾›ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "投稿終了ï¼"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "ログアウト"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "ログアウト"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "アカウントを作æˆï¼"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "%(username)s様ã¸\n\nGNU MediaGoblinアカウントを検証ã«ã™ã‚‹ã«ã¯ã€ã“ã®URLã‚’é–‹ã„ã¦ãã ã•ã„。\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "ã“ã‚“ã«ã¡ã¯ã€ã“ã®MediaGoblinサイトã¸ã‚ˆã†ã“ãï¼"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "投稿ã™ã‚‹"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "%(media_title)sを編集中"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "%(username)sã•ã‚“ã®ãƒ—ロフィールを編集中"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "ダウンロード"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "é€è¦–図"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "æ­£é¢å›³"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "上é¢å›³"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "å´é¢å›³"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "編集"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>ã•ã‚“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "%(username)sã•ã‚“ã®ãƒ—ロフィール"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "プロフィールを編集"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "%(username)sã•ã‚“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ã™ã¹ã¦è¦‹ã‚‹"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "メールã¯ã€ãã®æ–¹æ³•ã®æŒ‡ç¤ºã§ã„ãã¤ã‹ã®çž¬é–“ã«åˆ°ç€ã—ã¾ã™ã€‚"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "到ç€ã—ãªã„å ´åˆã¯ã€"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "確èªãƒ¡ãƒ¼ãƒ«ã‚’å†é€ä¿¡"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "ã‚ãªãŸã®ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚’紛失ã—ãŸå ´åˆã€<a href=\"%(login_url)s\">ログイン</a>ã—ã¦å†é€ã§ãã¾ã™ã€‚"
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "â†å‰ã¸"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "次ã¸â†’"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr ""
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr ""
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr ""
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr ""
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr ""
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr ""
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr ""
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr ""
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
diff --git a/mediagoblin/i18n/ja/mediagoblin.po b/mediagoblin/i18n/ja/mediagoblin.po
new file mode 100644
index 00000000..32f8714b
--- /dev/null
+++ b/mediagoblin/i18n/ja/mediagoblin.po
@@ -0,0 +1,2632 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Avery <averym@gmail.com>, 2011
+# ayleph <ayleph@thisshitistemp.com>, 2014
+# parlegon <parlegon@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/mediagoblin/language/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ç™»éŒ²ã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ãã®åå‰ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "メアドãŒç¢ºèªã•れã¦ã„ã¾ã™ã€‚ã“れã§ã€ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãƒ—ロファイルを編集ã—ã€ç”»åƒã‚’æå‡ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "検証キーã¾ãŸã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒé–“é•ã£ã¦ã„ã¾ã™"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "検証メールをå†é€ã—ã¾ã—ãŸã€‚"
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "タイトル"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "ã‚¿ã‚°"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "スラグ"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "スラグã¯å¿…è¦ã§ã™ã€‚"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "自己紹介"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "URL"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "旧パスワード"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "新パスワード"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "パスワード"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "ãã®ã‚¹ãƒ©ã‚°ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã¯ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ロファイルを編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "投稿終了ï¼"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "編集"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "削除"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "追加"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "ユーザーID"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "メールアドレス"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "ユーザーIDã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "ユーザーIDã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "パスワードã®å¤‰æ›´ãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "ã¾ã ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "ã“ã“ã§ä½œæˆï¼"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "パスワードを変更ã—ã¾ã™ã€‚"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "パスワードを忘れã¾ã—ãŸã‹ï¼Ÿ"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "ログイン"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "ログインã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "ファイル"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "ファイルをæä¾›ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "ログアウト"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "ログアウト"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "アカウントを作æˆï¼"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "%(username)s様ã¸\n\nGNU MediaGoblinアカウントを検証ã«ã™ã‚‹ã«ã¯ã€ã“ã®URLã‚’é–‹ã„ã¦ãã ã•ã„。\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "ã“ã‚“ã«ã¡ã¯ã€ã“ã®MediaGoblinサイトã¸ã‚ˆã†ã“ãï¼"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "投稿ã™ã‚‹"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "%(media_title)sを編集中"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "%(username)sã•ã‚“ã®ãƒ—ロフィールを編集中"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "ダウンロード"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "é€è¦–図"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "æ­£é¢å›³"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "上é¢å›³"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "å´é¢å›³"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)sã•ã‚“ã®ãƒ—ロフィール"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "プロフィールを編集"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>ã•ã‚“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "%(username)sã•ã‚“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ã™ã¹ã¦è¦‹ã‚‹"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "メールã¯ã€ãã®æ–¹æ³•ã®æŒ‡ç¤ºã§ã„ãã¤ã‹ã®çž¬é–“ã«åˆ°ç€ã—ã¾ã™ã€‚"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "到ç€ã—ãªã„å ´åˆã¯ã€"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "確èªãƒ¡ãƒ¼ãƒ«ã‚’å†é€ä¿¡"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "ã‚ãªãŸã®ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚’紛失ã—ãŸå ´åˆã€<a href=\"%(login_url)s\">ログイン</a>ã—ã¦å†é€ã§ãã¾ã™ã€‚"
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "â†å‰ã¸"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "次ã¸â†’"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/jbo/mediagoblin.po b/mediagoblin/i18n/jbo/mediagoblin.po
new file mode 100644
index 00000000..c13f8f41
--- /dev/null
+++ b/mediagoblin/i18n/jbo/mediagoblin.po
@@ -0,0 +1,2630 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# .djac.grant. <inactive+tadni@transifex.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Lojban (http://www.transifex.com/projects/p/mediagoblin/language/jbo/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: jbo\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the setting of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "nanca"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "matsi"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "jetfu"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "djedi"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "carca"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "mentu"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 3072e9a5..00000000
--- a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ko_KR/mediagoblin.po
index 921b9a17..c49bbfaf 100644
--- a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ko_KR/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/mediagoblin/language/ko_KR/)\n"
"MIME-Version: 1.0\n"
@@ -19,70 +19,174 @@ msgstr ""
"Language: ko_KR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "죄송합니다. ì§€ê¸ˆì€ ê°€ìž… 하실 수 없습니다."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "죄송합니다. 해당 ì‚¬ìš©ìž ì´ë¦„ì´ ì´ë¯¸ 존재 합니다."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "죄송합니다. 사용ìžì™€ 해당 ì´ë©”ì¼ì€ ì´ë¯¸ 등ë¡ë˜ì–´ 있습니다."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "해당 email 주소가 ì´ë¯¸ ì¸ì¦ ë˜ì–´ 있습니다. 지금 로그ì¸í•˜ì‹œê³  계정 정보를 수정하고 ì‚¬ì§„ì„ ì „ì†¡í•´ 보세요!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "ì¸ì¦ 키 ë˜ëŠ” ì‚¬ìš©ìž IDê°€ 올바르지 않습니다."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "로그ì¸ì„ 하셔야 고블린ì—서 ë©”ì¼ì„ 보낼 수 있습니다!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "ì´ë¯¸ ì¸ì¦ë°›ì€ email 주소를 가지고 있습니다!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "ì¸ì¦ ë©”ì¼ì„ 다시 ë³´ë‚´ 주세요."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "제목"
@@ -91,7 +195,7 @@ msgid "Description of this work"
msgstr "ì´ ìž‘ì—…ì— ëŒ€í•œ 설명"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -107,11 +211,11 @@ msgstr "태그"
msgid "Separate tags by commas."
msgstr "태그는 , 로 구분 ë©ë‹ˆë‹¤."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "'슬러그'"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "'슬러그'는 ê³µë°±ì¼ ìˆ˜ 없습니다."
@@ -139,125 +243,137 @@ msgstr "웹 주소"
msgid "This address contains errors"
msgstr "ì£¼ì†Œì— ì—러가 있습니다."
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "ì œ ë¯¸ë””ì–´ì— ëŒ€í•œ 컨í…ì„ ì›í•œë‹¤ë©´, ë©”ì¼ì„ 보내주세요."
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "ì œëª©ì€ ê³µë°±ì¼ ìˆ˜ 없습니다."
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "모ìŒì§‘ì— ëŒ€í•œ 설명"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "예전 비밀번호"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "계정 확ì¸ì„ 위해, ì´ì „ 비밀 번호를 입력해 주세요."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "새로운 비밀번호"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "비밀번호"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "해당 ìœ ì €ì— ëŒ€í•œ '슬러그'ê°€ ì´ë¯¸ 존재합니다."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "다른 사용ìžì˜ 미디어를 수정하고 있습니다. 조심해서 수정하세요."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "사용ìžì˜ 계정 정보를 수정하고 있습니다. 조심해서 수정하세요."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "계정 ì •ë³´ê°€ 저장 ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "계정 ì„¤ì •ì´ ì €ìž¥ ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "\"%s\" 모ìŒì§‘ì„ ì´ë¯¸ 가지고 있습니다!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "다른 ìœ ì €ì˜ ëª¨ìŒì§‘ì„ ìˆ˜ì • 중 입니다. 주ì˜í•˜ì„¸ìš”."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "ìž˜ëª»ëœ ë¹„ë°€ë²ˆí˜¸"
@@ -288,7 +404,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -296,58 +412,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -373,28 +489,28 @@ msgstr "설명"
msgid "I am sure I want to delete this"
msgstr "ì´ê±¸ 지우고 싶습니다."
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "ì´í–!! 등ë¡í–ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "í™•ì¸ ì²´í¬ë¥¼ 하지 않았습니다. 미디어는 ì‚­ì œë˜ì§€ 않았습니다."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -414,7 +530,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "수정"
@@ -424,7 +540,7 @@ msgstr "수정"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "삭제"
@@ -539,7 +655,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -557,26 +724,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -631,7 +798,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -760,23 +927,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -924,11 +1088,7 @@ msgstr "설명서 보내기"
msgid "Forgot your password?"
msgstr "비밀번호를 잊으셨나요?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "장소"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr " <a href=\"%(osm_url)s\">OpenStreetMap</a>으로 보기"
@@ -995,7 +1155,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr "ì´ í•­ëª©ì€ ê³µê°œ 사용ìžë“¤ì„ 위해 ê¼­ í•„ìš” 합니다."
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "ì‚¬ìš©ìž {0}ë‹˜ì´ ë“±ë¡ ë˜ì—ˆìŠµë‹ˆë‹¤!"
@@ -1008,8 +1168,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1017,39 +1177,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1073,7 +1233,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1105,26 +1265,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1148,15 +1308,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "알수없는 미디어 íŒŒì¼ ìž…ë‹ˆë‹¤."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1175,11 +1335,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "파ì¼ì„ 등ë¡í•˜ì…”야 합니다."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "\"%s\" 모ìŒì§‘ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤!"
@@ -1202,30 +1362,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "ë©”ì¼ì„ 확ì¸í•˜ì„¸ìš”!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "계정 설정 변경"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1233,25 +1389,29 @@ msgstr "계정 설정 변경"
msgid "Media processing panel"
msgstr "미디어 작업 패ë„"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "미디어 추가"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1305,7 +1465,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1396,13 +1556,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "%(media_title)sì˜ ì²¨ë¶€ 수정 중..."
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "첨부"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "첨부 추가"
@@ -1420,6 +1580,47 @@ msgstr "저장"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1445,7 +1646,7 @@ msgstr "%(username)s'ì˜ ê³„ì • 설정 변경중..."
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1499,19 +1700,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1524,38 +1712,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr "미디어는 다ìŒìœ¼ë¡œ 태그 ë˜ì—ˆìŠµë‹ˆë‹¤.: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "다운로드"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "ì›ë³¸"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "사용중ì´ì‹  웹 브ë¼ìš°ì ¸ê°€ HTML5를 ì§€ì›í•˜ì§€ 않아\n\t오디오 파ì¼ì„ 재ìƒí•  수 없습니다.\n\t죄송합니다."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "사운드 파ì¼ì„ ìž¬ìƒ í•˜ì‹œë ¤ë©´\n\tì´ê³³ì—서 ìµœì‹ ì˜ ë¸Œë¼ìš°ì ¸ë¥¼ 다운받으세요! <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "ì›ë³¸ 파ì¼"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM íŒŒì¼ (Vorbis ì½”ë±)"
@@ -1563,70 +1751,70 @@ msgstr "WebM íŒŒì¼ (Vorbis ì½”ë±)"
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "%(media_title)s ì´ë¯¸ì§€"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1640,6 +1828,32 @@ msgstr ""
msgid "Media in-processing"
msgstr "미디어 작업중..."
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1650,6 +1864,14 @@ msgstr "ìž‘ì—…ì¤‘ì¸ ë¯¸ë””ì–´ê°€ 없습니다."
msgid "These uploads failed to process:"
msgstr "ë‹¤ìŒ ìž‘ì—…ì„ í•˜ëŠ” ì¤‘ì— ì—…ë¡œë“œì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1659,6 +1881,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr "지난 10ê°œì˜ ì—…ë¡œë“œ 목ë¡"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1673,7 +1899,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1699,6 +1925,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1948,10 +2178,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1979,17 +2205,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "ë§ê¸€ 달기"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "ë§ê¸€ 추가"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2061,12 +2287,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>ì˜ ë¯¸ë””ì–´"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– <a href=\"%(user_url)s\">%(username)s</a>ì˜ ë¯¸ë””ì–´ë¥¼ ë³´ê³  있습니다."
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2181,6 +2407,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2217,6 +2451,10 @@ msgstr "최근"
msgid "older"
msgstr "ì´ì „"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "장소"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2225,38 +2463,38 @@ msgstr ""
msgid "Tagged with"
msgstr "태그 정보"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 없습니다."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "ì›ìФ!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2324,69 +2562,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "오우, ëŒ“ê¸€ì´ ë¹„ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "ëŒ“ê¸€ì´ ë“±ë¡ ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "확ì¸ì„ 하시고 다시 시ë„하세요."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "모ìŒì§‘ì„ ì¶”ê°€í•˜ê±°ë‚˜ 기존 모ìŒì§‘ì„ ì„ íƒí•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì´ ì´ë¯¸ 존재 합니다. \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì„ ì¶”ê°€í–ˆìŠµë‹ˆë‹¤. \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "미디어를 삭제 했습니다."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "다른 ì‚¬ëžŒì˜ ë¯¸ë””ì–´ë¥¼ 삭제하려고 합니다. 다시 한번 확ì¸í•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "모ìŒì§‘ì— ìžˆëŠ” í•­ëª©ì„ ì‚­ì œ 했습니다."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "확ì¸ì„ 하지 않았습니다. í•­ëª©ì€ ì‚­ì œí•˜ì§€ 않았습니다."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "다른 사용ìžì˜ 모ìŒì§‘ì— ìžˆëŠ” í•­ëª©ì„ ì‚­ì œí•˜ì˜€ìŠµë‹ˆë‹¤. 주ì˜í•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì„ ì‚­ì œí•˜ì…¨ìŠµë‹ˆë‹¤."
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "확ì¸ì„ 하지 않았습니다. 모ìŒì§‘ì€ ì‚­ì œí•˜ì§€ 않았습니다."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "다른 사용ìžì˜ 모ìŒì§‘ì„ ì‚­ì œí•˜ë ¤ê³  합니다. 주ì˜í•˜ì„¸ìš”."
diff --git a/mediagoblin/i18n/lt/mediagoblin.po b/mediagoblin/i18n/lt/mediagoblin.po
new file mode 100644
index 00000000..750da9e9
--- /dev/null
+++ b/mediagoblin/i18n/lt/mediagoblin.po
@@ -0,0 +1,2717 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# albertas <albertasgim@gmail.com>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-18 16:03-0600\n"
+"PO-Revision-Date: 2015-06-13 20:58+0000\n"
+"Last-Translator: albertas <albertasgim@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1434229084.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Atsiprašome, registracija šiame egzemplioriuje yra išjungta."
+
+#: mediagoblin/decorators.py:319
+#, fuzzy
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Atsiprašome, raportavimas šiame egzemplioriuje yra išjungtas."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Atsiprašome, autentikacija šiame egzemplioriuje yra išjungta."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Netinkamas naudotojo vardas arba el. pašto adresas."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Šiame lauke el. pašto adreso nurodyti nereikia."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Šiame lauke nurodykite el. pašto adresą."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Atsiprašome, naudotojas su tokiu vardu jau egzistuoja."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Atsiprašome, naudotojas su tokiu el. pašto adresu jau egzistuoja."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "Patvirtinimo raktas arba naudotojo id yra neteisingas."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+"Jūsų el. pašto adresas buvo patvirtintas. Dabar galite prisijungti, "
+"redaguoti naudotojo profilį ir įkelti paveikslėlių!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "Patvirtinimo raktas arba naudotojo id yra neteisingas"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Turite prisijungti, kad žinotumėme kam siųsti el. laiškus!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Jūs jau patvirtinote el. pašto adresą!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Dar kartą išsiųstas patvirtinimo el. laiškas."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} pridÄ—jo {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} pridÄ—jo {object} prie {target}"
+
+#: mediagoblin/db/mixin.py:407
+#, fuzzy
+msgid "{username} authored {object}"
+msgstr "{username} prisiÄ—mÄ— {object} autorystÄ™"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} sukūrė {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} nebemÄ—gsta {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} nebesidalina {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} atnaujino {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} pridėjo žymę {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "paveikslÄ—lis"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "komentaras"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "rinkinys"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "Šios medijos adreso pavadinimo dalis. Dažniausiai šito nereikia keisti."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licenzija"
+
+#: mediagoblin/edit/forms.py:54
+#, fuzzy
+msgid "Bio"
+msgstr "Bio"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Tinklapis"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Šiame adrese yra klaidų"
+
+#: mediagoblin/edit/forms.py:64
+#, fuzzy
+msgid "Hometown"
+msgstr "Gimtasis miestas"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Informuoti mane el. paštu, kai kas nors komentuoja mano mediją"
+
+#: mediagoblin/edit/forms.py:70
+#, fuzzy
+msgid "Enable insite notifications about events."
+msgstr "Įgalinti vidinius pranešimus apie įvykius."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Licenzijos nustatymai"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+"Įveskite savo slaptažodį, kad patvirtintumėte jog ši paskyra priklauso Jums"
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identifikatorius"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Reikšmė"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Įrašas su tokia adreso eilute jau egzistuoja šiam naudotojui."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Jūs redaguojate kito naudotojo mediją. Būkite atsargūs."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Jūs prisegėte priedą %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Galite redaguoti tik savo profilį."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Jūs redaguojate naudotojo profilį. Būkite atsargūs."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Profilio pakeitimai išsaugoti"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Nepavyko susieti stiliaus... stilius nenustatytas\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Šiam stiliui nenurodytas stilių failų katalogas\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Visgi, rasta senos direktorijos nuorodos simbolinė nuoroda; pašalinta.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Nepavyko susieti \"%s\": %s egzistuoja ir nÄ—ra simbolinÄ— nuoroda\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Praleidžiu \"%s\"; jau sukonfigūruota.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Rasta sena nuoroda \"%s\"; šalinama.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+"Norėdami daugiau sužinoti kaip tinkamai paleisti šį\n"
+"skriptą (ir kaip suformatuoti csv meta duomenų failą) skaitykite MediaGoblin\n"
+"dokumentacijos puslapį apie įkėlimą naudojant komandinę eilutę\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Vardas naudotojo, kuriam priklauso šie medijos įrašai"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Kelias iki csv failo su meta duomenų informacija."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Atsiprašome, naudotojas '{username}' neegzistuoja"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Failas kurio kelias {path} nerastas, naudokite -h parinktį pagalbai"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+"Klaida su medijos '{media_id}' reikšme '{error_path}': {error_msg}\n"
+"Meta duomenys nebuvo įkelti."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+"NEPAVYKO: Lokalus failas {filename} nepasiekiamas.\n"
+"{filename} nebus įkeltas."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
+"uploaded successfully."
+msgstr ""
+"SÄ—kmingai pateiktas {filename}!\n"
+"Pasitikrinkite savo svetainÄ—s Medijos Apdorojimo Skydelyje, kad "
+"įsitikintumėte,\n"
+"jog jis buvo įkeltas sėkmingai."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+"NEPAVYKO: Šis failas yra didesnis nei leistini šio tinklapio įkėlimo "
+"limitai."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "NEPAVYKO: Šis failas viršys naudotojo įkėlimo limitus."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "NEPAVYKO: Šis naudotojas yra viršijęs įkėlimo limitus."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+"Medija nebuvo ištrinta, nes nepatvirtinote, kad esate įsitikinęs, jog norite "
+"ištrinti."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Jūs norite ištrinti kito naudotojo Blogą. Tęskite su atsargumu."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Blogas nebuvo ištrintas, nes Jūs neturite teisių."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Pridėti Blogo įrašą."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Redaguoti BlogÄ…"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Ištrinti Blogą"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Redaguoti"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Ištrinti"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Peržiūrėti sąrašą</em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+#, fuzzy
+msgid "View"
+msgstr "Vaizdas"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Sukurti BlogÄ…"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+#, fuzzy
+msgid " Blog Dashboard "
+msgstr "Blogo valdymo skydelis"
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "unoconv nepasileidžia, žiūrėkite žurnalo failą"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Nepavyko konvertuoti video"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Panaikinti privilegijÄ…"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Užblokuoti naudotoją"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Siųsti naudotojui žinutę"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Ištrinti turinį"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "iki {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "neribotam laikui"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} išsiuntė įspėjimo el. laišką naudotojui {user}"
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} ištrynė komentarą."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} ištrynė medijos įrašą."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Įspėjimo forma"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "pakomentavo JÅ«sų tinklaraÅ¡Äio įrašą"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Užsiprenumeravote %s komentarus!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Jūs nebegausite pranešimų apie %s komentarus."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+#, fuzzy
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-Funkcijos---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Kaip tai veikia?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid "An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a "
+"password set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing"
+" the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid "Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid "An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to"
+" be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were "
+"sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/nb_NO/mediagoblin.po b/mediagoblin/i18n/nb_NO/mediagoblin.po
new file mode 100644
index 00000000..60e096b1
--- /dev/null
+++ b/mediagoblin/i18n/nb_NO/mediagoblin.po
@@ -0,0 +1,2638 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# BÃ¥rd <bard@kvidder.com>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-02-14 10:37+0000\n"
+"Last-Translator: BÃ¥rd <bard@kvidder.com>\n"
+"Language-Team: Norwegian Bokmål (Norway) "
+"(http://www.transifex.com/projects/p/mediagoblin/language/nb_NO/)\n"
+"Language: nb_NO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1423910245.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Beklager, registrering er skrudd av på denne instansen."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Beklager, rapportering er skrudd av på denne instansen."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Ugyldig brukernavn eller epostadresse."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Dette feltet kan ikke inneholde ikke epostadresser."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Dette feltet krever en epostadresse."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Beklager, en bruker ved det navnet eksisterer allerede."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Beklager, en bruker med den epostadressen eksisterer allerede."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "Verifikasjonsnøkkelen eller bruker id-en stemmer ikke."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+"Epostadressen din har blitt verifisert. Du kan nå logge inn, redigere "
+"profilen din og legge til bilder!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "Verifikasjonsnøkkelen eller bruker id-en stemmer ikke."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Du må være logget inn, så vi vet hvem vi skal sende eposten til!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Du har allerede verifisert epostadressen din!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Sendte verifikasjonseposten din på nytt."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} la til {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} la til {object} til {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} favorittmarkerte {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} likte {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} delte {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} fjernet favorittmarkering av {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} sluttet å følge {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} merket {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "et bilde"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "lyd"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "en person"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "et objekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Tittel"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Beskrivelse av verket"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+"Du kan bruke\n"
+"<a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+"Markdown</a> til formatering."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Merkelapper"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Separer merkelapper med komma."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Denne adressen inneholder feil"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Hjemsted"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Send meg epost når andre kommenterer på mine medier"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Dette vil være din standardlisens i opplastingsskjemaer."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "Tittelen kan ikke være tom"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Beskrivelse av denne samlingen"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 9f632e90..00000000
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/nl/mediagoblin.po b/mediagoblin/i18n/nl/mediagoblin.po
new file mode 100644
index 00000000..b28e4dd1
--- /dev/null
+++ b/mediagoblin/i18n/nl/mediagoblin.po
@@ -0,0 +1,2635 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# André Koot <meneer@tken.net>, 2014, 2015.
+# schendje <mail@jefvanschendel.nl>, 2011, 2012
+# mvanderboom <mvanderboom@gmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-24 22:42+0000\n"
+"Last-Translator: meneer <meneer@tken.net>\n"
+"Language-Team: Dutch "
+"(http://www.transifex.com/projects/p/mediagoblin/language/nl/)\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1422139339.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Sorry, registratie is uitgeschakeld op deze goblin."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Sorry, rapportage is uitgeschakeld op deze goblin."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Sorry, authenticatie is uitgeschakeld op deze goblin."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Ongeldige gebruikersnaam of e-mailadres."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Dit veld accepteert geen e-mailadressen."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Dit veld vereist een e-mailadres."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Sorry, er bestaat al een gebruiker met die naam."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Sorry, een gebruiker met dat e-mailadres bestaat al."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "De verificatiecode of gebruikersnaam is onjuist."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Uw e-mailadres is geverifieerd. U kunt nu inloggen, uw profiel bewerken, en afbeeldingen toevoegen!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "De verificatiecode of gebruikersnaam is onjuist"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Je moet ingelogd zijn, anders weten we niet waar we de e-mail naartoe moeten sturen!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Je hebt je e-mailadres al geverifieerd!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Verificatie e-mail opnieuw opgestuurd."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} voegde toe {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} voegde {object} toe aan {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} bewerkte {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} creëerde {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} verwijderde {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} vond {object} niet meer leuk"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} maakte {object} favoriet"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} volgde {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} vond {object} leuk"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} plaatste {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} plaatste {object} in {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} deelde {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} verwijderde {object} als favoriet"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} beëindigde volgen {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} vond {object} niet leuk"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} beëindigde delen {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} werkte {object} bij"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} tagde {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "een afbeelding"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "een reactie"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "een verzameling"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "een video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "een persoon"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "een object"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Titel"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Beschrijving van dit werk"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Voor opmaak kun je <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> gebruiken."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Tags"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Hou labels gescheiden met komma's."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Slug"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "De slug kan niet leeg zijn"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "Het titelgedeelte van het adres van deze media. Normaal gesproken hoef je deze niet te veranderen."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licentie"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Bio"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Website"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Dit adres bevat fouten"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Thuis"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Notificeer me per e-mail bij reacties op mijn media"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Activeer notificaties over gebeurtenissen op de site."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Licentievoorkeuren"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Dit wordt de standaardlicentie op uploadformulieren."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "De titel mag niet leeg zijn"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Beschrijving van deze verzameling"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "Het titelgedeelte van het adres van deze verzameling. Normaal gesproken hoef je deze niet te veranderen."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Oud wachtwoord"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Vul je oude wachtwoord in om te bewijzen dat dit jouw account is"
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nieuw wachtwoord"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Nieuw e-mailadres"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Vul je wachtwoord in om te bewijzen dat dit jouw account is."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identificatie"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Waarde"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Er bestaat al een onderwerp met die slug voor deze gebruiker."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "U bent de media van een andere gebruiker aan het aanpassen. Ga voorzichtig te werk."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Je hebt bijlage %s toegevoegd!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Je kunt alleen je eigen profiel bijwerken."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "U bent een gebruikersprofiel aan het aanpassen. Ga voorzichtig te werk."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Profielaanpassingen opgeslagen"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Accountinstellingen opgeslagen"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Onbekende applicatie, kon autorisatie niet intrekken"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Autorisatie voor applicatie is ingetrokken"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Je moet het verwijderen van je account bevestigen."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Je hebt al een verzameling met de naam \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "Er bestaat al een verzameling met die slug voor deze gebruiker."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Je bewerkt de verzameling van een andere gebruiker. Ga voorzichtig te werk."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Je e-mailadres is geverifieerd."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Verkeerd wachtwoord"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Kan thema niet linken... nog geen thema ingesteld\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Geen objectendirectory voor dit thema\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Maar, symlink naar oude link directory gevonden; verwijderd.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Kon \"%s\" niet linken: %s bestaat al en is geen symlink\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Overslaan \"%s\"; is al ingesteld\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Oude link gevonden voor \"%s\"; verwijderen.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Voor meer informatie over het juist uitvoeren van dit \nscript (en het opmaken van het metadata csv bestand), lees de MediaGoblin\ndocumentatie over commandoregel uploaden\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Gebruikersnaam van de eigenaar van deze nummers"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Pad naar het csv-bestand met metadata informatie."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "Geen haast, rustig, dan breekt het lijntje niet"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Sorry, er bestaat geen gebruiker met de naam '{username}'"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Bestand op {path} niet gevonden, gebruik de -h flag voor hulp"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Fout met media '{media_id}' waarde '{error_path}': {error_msg}\nMetadata niet geüpload."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "FOUT: Lokaal bestand {filename} kon niet worden benaderd.\n{filename} wordt niet geüpload."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr "Succesvol aangemeld {filename}!\nKijk in het Mediaverwerking panel op je website om te zien\nof het succesvol werd geüpload."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "FOUT: Dit bestand is groter dan de uploadlimiet voor deze site."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "FOUT: Dit bestand laat de gebruiker voorbij de uploadlimiet gaan."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "FOUT: Deze gebruiker is al voorbij de uploadlimiet."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} van {files_attempted} bestanden succesvol aangemeld"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "CSRF cookie niet aanwezig. Dit komt waarschijnlijk door een cookie blocker of iets dergelijks.<br/>Zorg ervoor dat je browser cookies van dit domein wel accepteert.."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Sorry, dat bestandstype wordt niet ondersteunt."
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Beschrijving"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Ik weet zeker dat ik dit wil verwijderen."
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Mooizo! Toegevoegd!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Zohee! bijgewerkt blogbericht geplaatst"
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Je hebt het blogbericht verwijderd."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Deze media was niet verwijderd omdat je niet hebt aangegeven dat je het zeker weet."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Je staat op het punt het Blog van iemand anders te verwijderen. Pas op."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "Het blog werd niet verwijderd omdat je niet de juiste rechten hebt."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Toevoegen Blogbericht"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Bewerk blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Verwijder Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Pas aan"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Ga naar lijstoverzicht </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Nog geen blogbericht"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Zeker weten dat je %(title)s wil verwijderen?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Permanent verwijderen"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Maak/bewerk een Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Voeg toe"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Maak/bewerk een blogbericht"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Maak/bewerk een blogbericht"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "%(blog_owner_name)s's Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Bekijk"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Maak een Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr " Blog Dashboard "
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "unoconv kon niet starten, controleer het logbestand"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Video transcoderen mislukt"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Neem rechten af"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Blokkeer deze gebruiker"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Stuur de gebruiker een bericht"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Verwijder de inhoud"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "De gebruiker wordt geblokkeerd tot:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "Waarom blokkeer je deze gebruiker?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Welke actie voer je uit om de melding af te handelen?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Welke rechten neem je af?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Waarom de gebruiker werd geblokkeerd:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Bericht aan de gebruiker:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Oplossing inhoud:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} nam van {user} de {privilege} rechten af."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} blokkeerde de gebruiker {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "tot {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "onbepaalde tijd"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} stuurde een waarschuwingsbericht naar {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} verwijderde de reactie."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} verwijderde het mediaonderwerp."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Waarschuwing van"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "reageerde op je bericht"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Geabonneerd op reacties op %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Je ontvangt geen meldingen over reacties op %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Moet een oauth_token leveren."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "Geen aanvraagtoken gevonden."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Sorry, het bestand is te groot."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "Sorry, door te uploaden zou je over je uploadlimiet gaan."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Sorry, je hebt je uploadlimiet bereikt."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Geef de URL op van de aanbevolen media"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "Primair"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Secundair"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Tertiair"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-Mogelijkheden---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Hoe werkt het?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Hoe kun je media aanbevelen?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr "\n Ga naar de pagina van het mediabestand dat je wilt aanbevelen. Kopieer de URL en\n plak die in een nieuwe regel in het bovenstaande invulveld. Er mag maar één url in een regel staan. De url die je in het veld plakte moet staan onder de koptekst die aangeeft hoe prominent de aanbeveling is (ofwel Primair,\n Secundair, of Tertiair). Wanneer al je aanbevolen media in het invoerveld staan, druk je op de Verwerk Aanvraag knop en je media zouden moeten worden getoond op de voorpagina.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "Bestaat er een andere manier om media aan te bevelen?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr "\n Ja. als dat liever hebt, kun je naar de media hoofdpagina gaan van het\n nummer dat je wilt aanbevelen, of wat je niet langer wilt aanbevelen en\n kijk naar de balk naast de inhoud. Als het nummer nog niet is\n aanbevolen, zie je een knop met de tekst \"Aanbevelen\". Druk op die\n knop en het nummer wordt als een Primaire aanbeveling bovenaan\n de pagina getoond.\n Alle andere aanbevelen nummers blijven aanbevelingen, maar worden\n naar beneden gedrukt.<br /><br />\n\n Als je naar de media homepagina van een nummer dat momenteel is\n aanbevolen gaat, zie je de opties \"Intrekken\", \"Promoveren\" en\n \"Demoveren\" waar eerst alleen de knop \"Aanbevelen\" stond.\n Klik op \"Intrekken\" en het nummer wordt niet langer op de voorpagina \n getoond. Je kunt het later altijd weer aanbevelen. Promoveren\n verplaatst het nummer naar boven op de pagina en Demoveren\n verplaatst het omlaag en maakt het minder prominent.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "Wat is een Primaire aanbeveling? Wat is een secundaire aanbeveling?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr "\n Deze categorieën geven aan hoe prominent een aanbeveling op jouw voorpagina wordt getoond. Primaire Aanbevelingen worden bovenaan en groter je voorpagina getoond. Daarna komen de Secundaire aanbevelingen, iets kleiner ook.\n Tertiaure aanbevelingen worden in een tabel ondaraan de pagina getoond.<br /><br />\n\n Van Primaire aanbevelingen wordt ook meer tekst getoond dan van secundaire aanbevelingen, die weer meer tekst tonen dan de Tertiaire aanbevelingen."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr "Hoe bepaal je welke informatie wordt getoond als een mediabestand is\n aanbevolen?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr "\n Als een nummer wordt aanbevolen, worden de titel, een miniatuurafbeelding en een deel van de omschrijving op de voorpagina van je website getoond.\n Het aantal weergegeven tekens hangt af van de prioriteit van de aanbeveling.\n Van een Primaire aanbeveling worden de eerste 512 tekens van de omschrijving getoond,\n Secundaire aanbevelingen omvatten 256 tekens van de omschrijving.\n Tertiaire aanbevelingen omvatten de eerste 128 tekens van de omschrijving.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Hoe verwijder je een aanbeveling?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr "\n Een medium uit de aanbevelingen verwijderen gebeurt door de regel uit het bovenstaande tekstveld te verwijderen en dan\n de Verwerken Query knop in te drukken.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "WAARSCHUWING:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr "\n Let er bij knippen en plakken van url's in bovenstaande invoerveld op dat als je een typefout maakt, het nummer niet worden aanbevolen als je op Verwerk Query drukt. Zorg er voor dat de bedoelde nummer worden aanbevolen.\n "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr "\nMedia aanbevelen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Aanbevolen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr "\nMedia niet meer aanbevelen"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Intrekken"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr "\nPromoveer aanbeveling "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Promoveren"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr "\nDemoveer aanbeveling"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Demoveren"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Nieuwste media"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "Momenteel is niets aanbevolen."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr "Als je een nummer wilt aanbevelen,\n ga dan naar de homepagina van dat nummer en klik op de knop \n<a class=\"button_action\">Aanbevelen</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr "Je ziet deze pagina om dat je een gebruiker bent met het recht nummers aan te bevelen, een gewone gebruiker ziet alleen een blanco pagina. Dus let erop je nummer aan te bevelen zolang jouw goblin de 'archivalook'\n plugin heeft geactiveerd. Een meer geavanceerde plugin voor het aanbevelen kan worden gevonden in het <a href=\"%(featured_media_url)s\">Aanbevelingenbeheer paneel.</a>"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Bekijk de meest recente media"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Aanbevelingenbeheer panel"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr "Sorry, dit geluidsfragment zal niet werken omdat\n\tje web-browser geen HTML5 audio ondersteunt."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "Je kunt een moderne web browser die\n\taudio kan afspelen krijgen op at <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Sorry, deze video werkt niet omdat je\nwebbrowser geen HTML5 video ondersteunt."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Je kunt een moderne web browser die deze\n\tvideo kan afspelen krijgen op at <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Gebruikersnaam"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "E-mailadres"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Gebruikersnaam of email-adres"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Blijf ingelogd"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Gebruikersnaam of e-mailadres"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Als dat e-mailadres (hoofdlettergevoelig!) is geregistreerd, dan wordt een e-mailbericht verstuurd met instructies voor het wijzigen van je wachtwoord."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Kon niemand vinden met die gebruikersnaam."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Een e-mail met instructies om je wachtwoord te veranderen is verstuurd."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "E-mail kon niet verstuurd worden omdat je gebruikersnaam inactief is of omdat je e-mailadres nog niet geverifieerd is."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "De gebruikersID is onjuist."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Je kunt nu inloggen met je nieuwe wachtwoord."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "Je bent geen actieve gebruiker meer. Neem contact op met de beheerder om je account te heractiveren."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Je wachtwoord is succesvol gewijzigd"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Voer je nieuwe wachtwoord in"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Wachtwoord opslaan"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Wijzigen %(username)s's wachtwoord"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Bewaren"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "Heb je nog geen account?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Maak er hier een!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Wijzig je wachtwoord:"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Wachtwoord herstellen"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Stuur instructies"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Wachtwoord vergeten?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Bekijken op <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "Log in om een account te maken!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadata"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Bewerk Metadata"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Toestaan"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Verbieden"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Naam"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "De naam van de OAuth client"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Dit is zichtbaar voor gebruikers waardoor je\n applicatie als hen kan inloggen."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Type"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Vertrouwelijk</strong> - De client kan\n aanvragen doen bij de GNU MediaGoblin server die niet kunnen worden afgevangen door de user agent (bijv. server-side client).<br />\n <strong>Openbaar</strong> - De client kan geen vertrouwelijke aanvragen bij de GNU MediaGoblin server maken (bijv. client-side\n JavaScript client)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "Redirect URI"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "De verwijs URI voor de applicaties, dit veld\n is <strong>verplicht</strong> voor openbare clients."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Dit is een verplicht veld voor openbare clients"
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "De client {0} is geregistereerd!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "OAuth client verbindingen"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Je OAuth clients"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Sorry, er is al een account geregistreerd met die OpenID"
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Sorry, de OpenID server kon niet worden gevonden"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "Geen OpenID service gevonden voor %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Verificatie van %s mislukt\"%s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Verificatie geannuleerd"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "Je OpenID URL is succesvol bewaard."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "Je kunt je OpenID URL alleen verwijderen als je een wachtwoord hebt ingesteld."
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Die OpenID is niet geregistreerd voor dit account."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "OpenID succesvol verwijderd."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "OpenID toevoegen"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "OpenID verwijderen"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenID's"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Inloggen"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Inloggen is mislukt!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "Log in om een account te maken!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Of login met een wachtwoord!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "Of login met OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "Of registreer met een OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Sorry, er is al een account geregistreerd met dat Persona e-mailadres."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "Het Persona e-mailadres is succesvol verwijderd."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "Je kunt je Persona e-mailadres alleen verwijderen als je een wachtwoord hebt ingesteld."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Dat Persona e-mailadres is niet geregistreerd voor dit account."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Sorry, er is al een account geregistreerd met dat Persona e-mailadrers."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "Je Persona e-mailadres is succesvol bewaard."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Verwijder een Persona e-mailadres"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Voeg een Persona e-mailadres toe"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "Persona's"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "Of login met Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "Of registreer mer Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Verkeerd bestandsformaat voor mediatype opgegeven."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Kopiëren naar openbare opslag mislukt."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "Een acceptabel verwerkingsbestand is niet aanwezig"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Max bestandsgrootte: {0} mb"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Bestand"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Je kunt\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> gebruiken voor opmaak."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Je moet een bestand opgeven."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Verzameling \"%s\" toegevoegd!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Je bent geblokkeerd."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Afbeelding van uitgestrekte goblin"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Je bent geblokkeerd"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "tot %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Verifieer je e-mailadres!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "uitloggen"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Accountinstellingen aanpassen"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Mediaverwerkingspaneel"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Afmelden"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Voeg media toe"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Creëer een nieuwe verzameling"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Moderator mogelijkheden:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Gebruikersbeheer panel"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Meldingenbeheer panel"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorisatie"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autoriseer"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Je bent ingelogd als"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Sta je toegang toe"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "voor een onbekende app"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "om je account te gebruiken?"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Apps met toegang tot jouw account kunnen:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Nieuwe media namens jou plaatsen"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Je informatie zien (bv. profiel, media etc.)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Je informatie wijzigen"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorisatie gereed"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorisatie compleet"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Kopieer en plak deze <strong>verificatiecode</strong> in je client:"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Maak een account aan!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Creëer"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Hallo %(username)s , open de volgende URL in je webbrowser om je GNU MediaGoblin account te activeren: %(verification_url)s "
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Powered by <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, een <a href=\"http://gnu.org/\">GNU</a> project."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Uitgegeven onder de <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>-licentie. <a href=\"%(source_link)s\">Broncode</a> available."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Gebruiksvoorwaarden"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Verkennen"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Hoi, welkom op deze MediaGoblin website!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Deze website draait <a href=\"http://mediagoblin.org\">MediaGoblin</a>, een buitengewoon goed stuk software voor mediahosting."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Om je eigen media toe te voegen, te reageren en meer, kun je inloggen met je MediaGoblin account."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "Heb je er nog geen? Het is heel eenvoudig!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n >Creëer een account op deze site</a>\n of"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Installeer MediaGoblin op je eigen server</a>"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin logo"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Aanpassen bijlagen voor %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Bijlagen"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Voeg een bijlage toe"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Wijzigingen opslaan"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Wijzigen %(username)s's e-mailadres"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Intrekken applicatieautorisaties"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Intrekken applicatieautorisaties"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr "Deze applicaties kunnen je GNU MediaGoblin account gebruiken.\nDeautoriseren van de applicatie betekent dat die je account niet kan gebruiken."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Er zijn geen applicaties geautoriseerd."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Type:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Geautoriseerd:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s geleden"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Echt gebruiker '%(user_name)s' en alle gerelateerde media/reacties verwijderen?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Ja, verwijder mijn account"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "%(media_title)s aanpassen"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "%(username)ss accountinstellingen aanpassen"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Verwijder mijn account"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "E-mailadres"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Bewerken %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Het profiel aanpassen van %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadata voor \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "MetaData"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Voeg nieuwe rij toe"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Metadata bijwerken"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Lege rijen opschonen"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Hallo,\n\nWe willen verifiëren dat jij %(username)s bent. Als dat zo is, dan \nkun je de onderstaande link volgens om je e-mailadres te verifiëren.\n\n%(verification_url)s\n\nAls je niet %(username)s bent, of geen e-mailadreswijziging aanvroeg, dan kun je dit bericht negeren."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Nieuwe reacties"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Alles markeren als gelezen"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Media met het label: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Download"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Origineel"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr "Sorry, dit geluidsfragment zal niet werken omdat\n⇥ je webbrowser geen HTML5 audio ondersteunt"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr "Je kunt een moderne web-browser die wel\n⇥ audio kan afspelen vinden op <a href=\"http://getfirefox.com\">\n⇥ http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Origineel bestand"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "WebM bestand (Vorbis codec)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Aangemaakt"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Afbeelding voor %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "PDF bestand"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspectief"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Voorkant"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Bovenkant"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Zijkant"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Download model"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Bestandsformaat"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Object hoogte"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Sorry, deze video werkt niet omdat\nje webbrowser geen HTML5 video ondersteunt."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Je kunt een moderne webbrowser die\ndeze video af kan spelen krijgen op\n<a href=\"http://getfirefox.com\">http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "WebM bestand (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Hier kun je de status zien van de media die verwerkt worden op deze Goblin."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Media te verwerken"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Gebruiker"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Wanneer toegevoegd"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Transcoderen voortgang"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Geen media om te verwerken"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Deze toevoegingen konden niet verwerkt worden:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Reden voor mislukken"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Mislukken metadata"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Geen fouten!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Laatste 10 geslaagde uploads"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Aangemeld"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Niets verwerkt, nog niet!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Sorry, geen melding gevonden."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Terug naar Meldingenpanel"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Melden"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Gemelde reactie"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr "\n â– Gemelde media door <a href=\"%(user_url)s\">%(user_name)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr "\n INHOUD VAN\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n IS VERWIJDERD\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Reden voor melding:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Oplossen"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Los deze melding op"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Status"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "OPGELOST"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "Je kunt geen actie nemen tegenover een beheerder"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Meldingenpanel"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr "\n Hier kun je de door gebruikers ingestuurde open meldingen zien.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr "Actieve ingestuurde meldingen"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Overtreder"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Wanneer gemeld"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Gemeld door"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Reden"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr "\n Gemelde Reactie #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr "\n Gemelde Media #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "Geen open meldingen gevonden."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Afgesloten meldingen"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Opgelost"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Actie"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr "\n Afgesloten melding #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Geen afgesloten meldingen gevonden."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Gebruiker: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Terug naar gebruikerspanel"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Sorry, die gebruiker kon niet worden gevonden."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "E-mailverificatie is nodig"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "Iemand heeft een account met deze gebruikersnaam gemaakt, maar die moet nog geactiveerd worden."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profiel van %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "GEBLOKKEERD tot %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "Geblokkeerd voor onbepaalde tijd"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Deze gebruiker heeft zijn of haar profiel (nog) niet ingevuld."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Profiel aanpassen."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Blader door verzamelingen"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Actieve meldingen voor %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "Melding ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Gemelde inhoud"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Beschrijving van melding"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Melding #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Gemelde reactie"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Gemelde media"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "Geen actieve meldingen gedaan voor %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Alle meldingen voor %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Alle meldingen die %(username)s heeft ingestuurd"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "%(username)s's rechten"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Recht"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Toegekend"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Ja"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Nee"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Blokkeer gebruiker"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Deblokkeer gebruiker"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Gebruikerspanel"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr "\n Hier kun je je gebruikers opzoeken om eventueel acties te ondernemen.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Actieve gebruikers"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Wanneer aangemeld"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "# geplaatste reacties"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "Geen gebruikers gevonden."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Voeg een collectie toe"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Voeg media toe"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Blogbericht door <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Geef een reactie"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Voeg dit bericht toe"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Toegevoegd"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (%(username)s's collectie)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s van <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Verwijder collectie %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "Collectie %(title)s echt verwijderen?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Verwijder %(media_title)s uit %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Echt %(media_title)s verwijderen uit %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Verwijderen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "%(username)s's verzamelingen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s verzamelingen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Hallo %(username)s,\n%(comment_author)s reageerden op je bericht (%(comment_url)s) op %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Media van %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s media met tag <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Media van <a href=\"%(user_url)s\"> %(username)s </a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Blader door media van <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Voorbeeldreactie"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Voeg “%(media_title)s†toe aan collectie"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Voeg een nieuwe collectie toe"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Hier kun je de status zien van de media die verwerkt worden."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Je 10 laatste geslaagde uploads"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Stuur een melding in</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Deze reactie wordt gemeld"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "Dit mediabestand wordt gemeld"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\n â– gepubliceerd door <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Bestandsmelding"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Hier is een plekje om anderen over jezelf te vertellen."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Bekijk alle media van %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Dit is waar je nieuwe media zal verschijnen, maar het lijkt erop dat je nog niets heb toegevoegd."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Het lijkt erop dat er nog geen media is."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Bijna klaar! Je account moet nog geactiveerd worden."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Een e-mail zou in een paar ogenblikken aan moeten komen met instructies hiertoe."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "Zoniet:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Stuur de verificatie e-mail opnieuw op."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Iemand heeft een account met deze gebruikersnaam gemaakt, maar hij moet nog geactiveerd worden."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Als jij die persoon bent, maar de verificatie e-mail verloren hebt, kunt je <a href=\"%(login_url)s\">inloggen</a> en het nogmaals verzenden."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(verwijdered)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Opgenomen in"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Voeg toe aan collectie"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Abonneer op reacties"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Onderdruk reacties"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "feed pictogram"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom feed"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Alle rechten voorbehouden"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Nieuwer"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Ouder →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Ga naar pagina:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "nieuwer"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "ouder"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Locatie"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Meld media"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Getagged met"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Kon het afbeeldingsbestand niet lezen."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Oeps!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Er trad een fout op"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Verkeerde aanvraag"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "De aanvraag aan de server is ongeldig, controleer opnieuw"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Actie niet toegestaan"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Sorry knul, dat kan ik je niet laten doen!</p><p>Je probeerde iets te doen wat je niet mag. Probeerde je opnieuw alle accounts te verwijderen?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Er lijkt geen pagina aanwezig op dit adres. Sorry!</p><p>Als je zeker weet dat het adres goed is, dan is de pagina misschien verplaatst of verwijderd."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "jaar"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "maand"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "week"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "dag"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "uur"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minuut"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Reactie"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Je kunt <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> gebruiken voor opmaak."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Ik weet zeker dat ik dit uit de verzameling wil verwijderen."
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Verzameling"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Selecteer --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Voeg een notitie toe"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Je kunt\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> gebruiken voor opmaak."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Aanleiding voor melding"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Sorry, reageren is uitgeschakeld."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Oeps, je bericht was leeg."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Je bericht is geplaatst!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Controleer de nummer en probeer het opnieuw."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Je moet een collectie selecteren of aanmaken"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" zit al in collectie \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" toegevoegd aan collectie \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Je hebt deze media verwijderd."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Je staat op het punt de media van iemand anders te verwijderen. Pas op."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Je hebt het nummer uit de collectie verwijderd."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "Dit nummer is niet verwijderd omdat je niet hebt aangegeven dat je het zeker weet."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Je staat op het punt een nummer uit de collectie van iemand anders te verwijderen. Pas op."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Je verwijderde collectie \"%s\""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "De collectie is niet verwijderd omdat je niet hebt aangegeven dat je het zeker weet."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Je staat op het punt om de collectie van iemand anders te verwijderen. Pas op."
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 74ae4401..00000000
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nn_NO/mediagoblin.po
index 06700746..4b664092 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nn_NO/mediagoblin.po
@@ -1,89 +1,197 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# velmont <odin.omdal@gmail.com>, 2013
+# velmont <odin.omdal@gmail.com>, 2013-2014
# velmont <odin.omdal@gmail.com>, 2011-2012
+# Odin Hørthe <odin.omdal@gmail.com>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/mediagoblin/language/nn_NO/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-08-31 17:10+0000\n"
+"Last-Translator: Odin Hørthe <odin.omdal@gmail.com>\n"
+"Language-Team: Norwegian Nynorsk (Norway) "
+"(http://www.transifex.com/projects/p/mediagoblin/language/nn_NO/)\n"
+"Language: nn_NO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Pootle 2.5.0\n"
"Generated-By: Babel 1.3\n"
-"Language: nn_NO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POOTLE-MTIME: 1441041059.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrering er slege av. Orsak."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr "Rapportering er slege av. Orsak."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "Autentisering er slege av. Orsak."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Ugyldig brukarnamn eller passord."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Dette feltet tek ikkje epostadresser."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Dette feltet krev ei epostadresse."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Ein konto med dette brukarnamnet finst allereide."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Ein brukar med den epostadressa finst allereie."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Kontoen din er stadfesta. Du kan no logga inn, endra profilen din og lasta opp filer."
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Du må vera innlogga, slik me veit kven som skal ha eposten."
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Du har allereie verifisiert epostadressa."
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Stadfestingsepost sendt."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} la til {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} la {object} til {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} skreiv {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} lagde {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} sletta {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} mislikte {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} favorittmarkerte {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} fylgde {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} likte {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} posta {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} posta {object} til {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} delte {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} fjerna favorittmarkering av {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} stoppa fylgja {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} stoppa å lika {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} slutta å dela {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} oppdaterte {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} merkelappa {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "eit bilete"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "eit innspel"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "ei samling"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "ein video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "lyd"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "ein person"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "eit objekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Tittel"
@@ -92,7 +200,7 @@ msgid "Description of this work"
msgstr "Skildring av verk"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -108,11 +216,11 @@ msgstr "Merkelappar"
msgid "Separate tags by commas."
msgstr "Separer merkelappar med komma."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Nettnamn"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Nettnamnet kan ikkje vera tomt"
@@ -140,125 +248,137 @@ msgstr "Heimeside"
msgid "This address contains errors"
msgstr "Adressa inneheld feil"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Heimby"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Send meg epost når andre kjem med innspel på verka mine."
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Slå av/på notifikasjonar om hendingar."
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Lisens-val"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Dette vil vera standardvalet ditt for lisens."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Tittelen kjan ikkje vera tom"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Forklaringa til denne samlinga"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Tittel-delen av denne samlinga si adresse. Du treng normalt sett ikkje endra denne."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Gamalt passort"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Skriv inn det gamle passordet ditt for å stadfesta at du eig denne kontoen."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Nytt passord"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Ny epostadresse"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Passord"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Skriv inn passordet som prov på at dette er din konto."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identifikator"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Verdi"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Eit innlegg med denne adressetittelen finst allereie."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Trå varsamt, du endrar nokon andre sine verk."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "La til vedlegg %s."
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Du kan berre enda din eigen profil."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Trå varsamt, du endrar nokon andre sin profil."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Lagra endring av profilen"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Lagra kontoinstellingar"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Ukjend applikasjon, kan ikkje fjerna løyve."
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Fjerna løyve for applikasjon"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Du må stadfesta slettinga av kontoen din."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Du har allereie ei samling med namn «%s»."
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Ei samling med den nettadressa finst allereie for denne brukaren."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Du endrar ein annan brukar si samling. Trå varsamt."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Epostadressa di er bekrefta."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Feil passord"
@@ -289,68 +409,68 @@ msgstr "Hopper over «%s»: allereie satt opp.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Gamal lenkje funnen for «%s»; fjernar.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-msgstr ""
+msgstr "For more information about how to properly run this\nscript (and how to format the metadata csv file), read the MediaGoblin\ndocumentation page on command line uploading\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "Name of user these media entries belong to"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "Path to the csv file containing metadata information."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
-msgstr ""
+msgstr "Don't process eagerly, pass off to celery"
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Sorry, no user by username '{username}' exists"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "File at {path} not found, use -h flag for help"
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
-msgstr ""
+msgstr "Error with media '{media_id}' value '{error_path}': {error_msg}\nMetadata was not uploaded."
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
-msgstr ""
+msgstr "FAIL: Local file {filename} could not be accessed.\n{filename} will not be uploaded."
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
-msgstr ""
+msgstr "Successfully submitted {filename}!\nBe sure to look at the Media Processing Panel on your website to be sure it\nuploaded successfully."
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
-msgstr ""
+msgstr "FAIL: This file is larger than the upload limits for this site."
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
-msgstr ""
+msgstr "FAIL: This file will put this user past their upload limits."
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "FAIL: This user is already past their upload limits."
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "{files_uploaded} out of {files_attempted} files successfully submitted"
#: mediagoblin/meddleware/csrf.py:134
msgid ""
@@ -374,48 +494,48 @@ msgstr "Forklaring"
msgid "I am sure I want to delete this"
msgstr "Eg er sikker eg vil sletta dette"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Johoo! Opplasta!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Sende inn det endra innlegget"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Du sletta bloggen."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Sletta ikkje verket."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "Du er i ferd med å sletta ein annan brukar sin blogg. Trå varsamt."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Sletta ikkje bloggen fordi du ikkje har løyve."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Legg til innlegg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Endra blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Slett blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Endra"
@@ -425,17 +545,17 @@ msgstr "Endra"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Slett"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em>GÃ¥ til listevisning</em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr "Ingen innlegg enno."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -464,7 +584,7 @@ msgstr "Slett permanent"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Opprett/endra ein blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -477,28 +597,28 @@ msgstr "Legg til"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Opprett/endra eit innlegg."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Opprett/endra eit innlegg."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "Bloggen til %(blog_owner_name)s"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Vis"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Lag ein blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr "Blogg styringspanel"
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
@@ -506,7 +626,7 @@ msgstr "klarte ikkje køyra unoconv, sjekk logg-fil"
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
-msgstr "Skjedde noko gale med video transkodinga"
+msgstr "Skjedde noko gale med video-transkodinga"
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
@@ -540,7 +660,58 @@ msgstr "Kva handling vil du ta for å løysa rapporteringa?"
msgid "What privileges will you take away?"
msgstr "Kva privilegium vil du ta vekk?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Grunn til at brukaren er utestengd:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Melding til brukar:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Løysingsinnhald:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "\n{mod} tok vekk {privilege} privilegiane til {user}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr "\n{mod} utestengde brukaren {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "til {dato}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "for alltid"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr "\n{mod} sende ein åtvaringsepost til {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr "\n{mod} sletta innspelet."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr "\n{mod} sletta verket."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Åtvaring frå"
@@ -558,56 +729,56 @@ msgstr "Tingar innspel frå %s."
msgid "You will not receive notifications for comments on %s."
msgstr "Du vil ikkje få notifikasjonar for innspel på %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "Treng oauth_token (must provide oath_token)."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "Noko gjekk gale :( (no request token found)."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "Fila er for stor."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "Opplasting av denne fila vil putta deg over opplastingsgrensa di."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "Du har nådd opplastingsgrensa di."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "Skriv adresse for verket du vil visa fram."
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Primær"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Sekundær"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Tertiær"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
-msgstr ""
+msgstr "-----------{display_type}-Funksjonar---------------------------\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Korleis fungerer dette?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "Korleis framheva media?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
@@ -621,10 +792,16 @@ msgid ""
" displayed on the front page.\n"
" "
msgstr ""
+"GÃ¥ til sida med verket du vil framheva. Kopier addressa og kopier ho inn i "
+"ei ny line i tekstboksar over. Det bør berre vera ei adresse per line. "
+"Adressa du limte inn i tekstboksen bør vera under overskrifta som seier kor "
+"prominent plasseringa skal vera (primær, sekundær eller tertiær). Når alle "
+"verka du vil framheva er inne i tekstboksen, klikk Send-knappen og verkene "
+"skal bli vist på framsida."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "Er det ein annen måte å handtera framheva verk?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -632,7 +809,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -647,10 +824,17 @@ msgid ""
" less prominent.\n"
" "
msgstr ""
+"Ja, dersom du føretrekk, kan du gå til verket si side og framheva/ta vekk "
+"framheving der. Du vil sjå ei lenkje som heiter «Framhev», når du trykkjer "
+"den kjem verket på framsida og dytter ned dei andre verka som allereie er "
+"valt.<br/ ><br />Dersom verket allereie er framheva kan du velja mellom "
+"«Fjern framheving», «Viktigare framheving» og «Mindre viktig framheving». "
+"Fjern framheving gjer nett det, «viktigare framheving» let verket få ei "
+"høgare plassering på sida, og «mindre viktig framheving» gjer det motsette."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
msgid "What is a Primary Feature? What is a Secondary Feature?"
-msgstr ""
+msgstr "Kva ein ein primær-framheving? Kva med sekundær-framheving?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
@@ -664,12 +848,16 @@ msgid ""
" Features, and Secondary Features can display longer descriptions than\n"
" Tertiary Features."
msgstr ""
+"Desse kategoriane berre seier kor framheva/prominent dei vil vera på "
+"framsida di. Primær er plassert på toppen av framsida og er store. Sekundær "
+"er litt mindre. Tertiær er i ein tabell nedst på sida.<br /><br />Primære "
+"framhevingar har òg lengre skildringar enn sekundær og tertiær."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
msgid ""
"How to decide what information is displayed when a media entry is\n"
" featured?"
-msgstr ""
+msgstr "Korleis bestemma kva informasjon som skal visast i eit framheva verk?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
msgid ""
@@ -682,10 +870,13 @@ msgid ""
" and Tertiary Features display the first 128 characters of their description.\n"
" "
msgstr ""
+"Ved framheving vil eit verk sin tittel, knøttbilete og ein del av skildringa "
+"visast fram på framsida. Primær framheving viser dei fyrste 512 teikna av "
+"skildringa. Sekundær viser 256 og tertiær 128."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
msgid "How to unfeature a piece of media?"
-msgstr ""
+msgstr "Korleis fjerna eit verk frå framheving?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
@@ -693,11 +884,11 @@ msgid ""
" Unfeature a media by removing its line from the above textarea and then\n"
" pressing the Submit Query button.\n"
" "
-msgstr ""
+msgstr "Ganske enkelt fjern lina frå tekstfeltet og trykk «Send inn»-knappen."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "Ã…TVARING:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -707,46 +898,48 @@ msgid ""
" featured. Make sure that all your intended Media Entries are featured.\n"
" "
msgstr ""
+"Når du limer inn addresser inn i tekstboksen over, pass på at dersom du "
+"skriv noko feil og trykkjer «Send inn» so vil ikkje verket bli framheva."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
msgid ""
"\n"
"Feature Media "
-msgstr ""
+msgstr "Framhev verk"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
msgid "Feature"
-msgstr ""
+msgstr "Framhev"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
msgid ""
"\n"
"Unfeature Media "
-msgstr ""
+msgstr "Fjern framheving"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
msgid "Unfeature"
-msgstr ""
+msgstr "Fjern framheving"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
msgid ""
"\n"
"Promote Feature "
-msgstr ""
+msgstr "Viktigare framheving"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
msgid "Promote"
-msgstr ""
+msgstr "Viktigare"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
msgid ""
"\n"
"Demote Feature "
-msgstr ""
+msgstr "Mindre viktig framheving"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
msgid "Demote"
-msgstr ""
+msgstr "Mindre viktig"
#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
#: mediagoblin/templates/mediagoblin/root.html:32
@@ -755,35 +948,39 @@ msgstr "Nyaste verk"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
-msgstr ""
+msgstr "Ingen verk er framheva nett no."
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
+"Dersom du ynskjer å framheva eit verk, gå til verket og klikk på knappen som "
+"seier <a class=\"button_action\">Framhev</a>."
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
+"Du ser denne sida fordi du er ein brukar som kan framheva verk. Ein vanleg "
+"brukar vil sjå ei blank side, so pass på at du har framheva verk so lengje "
+"som du har 'archivalook' innstikket aktivert. Eit meir avansert verkty for å "
+"handtera framhevingar kan finnast i <a href=\"%"
+"(featured_media_url)s\">panelet for framhevingar.</a>"
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "Sjå nyaste verk"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "Handtering av framhevingar"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
@@ -791,6 +988,7 @@ msgid ""
"\tyour web browser does not support HTML5\n"
"\taudio."
msgstr ""
+"Orsak, lyden vil ikkje fungera fordi netlesaren din stør ikkje HTML5 audio."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
@@ -798,6 +996,8 @@ msgid ""
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
msgstr ""
+"Du kan få ei moderne netlesar som kan spela lyden på <a "
+"href=\"http://getfirefox.com\">http://getfirefox.com</a>."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
@@ -806,6 +1006,9 @@ msgid ""
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"Orsak, denne videoen fungerer ikkje\n"
+"fordi netlesaren din ikkje stør\n"
+"HTML5 video."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -814,6 +1017,9 @@ msgid ""
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
+"Du kan skaffa deg ein moderne netlesar som kan spela denne videoen hjå <a "
+"href=http://opera.com>http://opera.com</a> eller <a "
+"href=\"http://getfirefox.com\">http://getfirefox.com</a>."
#: mediagoblin/plugins/basic_auth/forms.py:24
#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
@@ -925,11 +1131,7 @@ msgstr "Send instruksjonar"
msgid "Forgot your password?"
msgstr "Gløymd passordet?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Stad"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Sjå på <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -940,11 +1142,11 @@ msgstr "Logg inn for å oppretta ein konto."
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Metadata"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "Endra metadata"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
@@ -996,7 +1198,7 @@ msgstr "Omdirigerings-URI-en for programmene. Denne feltet <strong>krevst</stron
msgid "This field is required for public clients"
msgstr "Dette feltet krevst for opne (public) klientar"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Klienten {0} er registrert."
@@ -1009,8 +1211,8 @@ msgid "Your OAuth clients"
msgstr "Dine OAuth-klientar"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Ein konto er allereie registrert til den OpenID-en."
@@ -1018,39 +1220,39 @@ msgstr "Ein konto er allereie registrert til den OpenID-en."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Fann ikkje OpenID-tenaren."
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Ingen OpenID funne for %s."
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Stadfesting av %s feila: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Stadfesting avbrutt"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Lagra OpenID-url."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "Kan ikkje sletta den einaste OpenID-urlen utan at du har eit passord satt."
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Den OpenID-en er ikkje registrert til denne kontoen."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "Fjerna OpenID-en."
@@ -1074,7 +1276,7 @@ msgstr "OpenID-ar"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1106,26 +1308,26 @@ msgstr "Eller registrer med OpenID."
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Ein konto er allereie registrert til den Persona-eposten."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Persone-eposten fjerna."
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "Du kan ikkje sletta din einaste Persona-epostadresse utan eit passord satt."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Den Persona-epostadressa er ikkje registrert til denne kontoen."
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "Ein konto med den Persona-epostadressa finst allereie."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Persone-epostadressa lagra."
@@ -1149,15 +1351,15 @@ msgstr "Eller logg inn med Persona."
msgid "Or register with Persona!"
msgstr "Eller registrer med Persona."
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Ugyldig fil for medietypen."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "Klarte ikkje kopiera til «public storage»."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "Fann ingen akseptable filar for prosessering."
@@ -1176,11 +1378,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "Du kan bruka\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> til formattering."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Du må velja ei fil."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "La til samlinga «%s»."
@@ -1203,30 +1405,26 @@ msgstr "Du har blitt bannlyst."
msgid "until %(until_when)s"
msgstr "til %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "for alltid"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Stadfest epostadressa di."
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "Logg ut"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "<a href=\"%(user_url)s\">%(user_name)s</a> sin konto"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Endra kontoinstellingar"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1234,25 +1432,29 @@ msgstr "Endra kontoinstellingar"
msgid "Media processing panel"
msgstr "Verkprosesseringspanel"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Logg ut"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Legg til verk"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Lag ny samling"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Modereringsrettar:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Brukaradministrasjon"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Rapporteringsadministrasjon"
@@ -1306,8 +1508,9 @@ msgid "Authorization Complete"
msgstr "Godkjenning ferdig"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Kopier og lim inn dette i klienten din:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+"Kopier og lim inn <strong>verifiseringskoden</strong> inn i klienten din:"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -1377,13 +1580,15 @@ msgid ""
"\n"
" >Create an account at this site</a>\n"
" or"
-msgstr ""
+msgstr ">Lag ein konto på denne sida</a> eller"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
msgstr ""
+"<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">set opp "
+"MediaGoblin på din eigen server</a>"
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -1397,13 +1602,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Endrar vedlegg for %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Vedlegg"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Legg ved vedlegg"
@@ -1421,6 +1626,49 @@ msgstr "Lagra"
msgid "Changing %(username)s's email"
msgstr "Endrar eposten til %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Fjern løyve for applikasjonar"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Fjern løyve for applikasjonar"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+"Desse applikasjonane har tilgang til GNU MediaGoblin-kontoen din. Viss du "
+"fjernar løyvet til ein applikasjon vil du fjerna den tilgangen."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Ingen applikasjonar med løyve."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Type:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Løyve:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s sidan"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1446,7 +1694,7 @@ msgstr "Endrar kontoinnstellingane til %(username)s"
msgid "Delete my account"
msgstr "Slett kontoen min"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Epost"
@@ -1464,23 +1712,23 @@ msgstr "Endrar profilen til %(username)s"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
msgid "Metadata for \"%(media_name)s\""
-msgstr ""
+msgstr "Metadata for «%(media_name)s»"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "Metadata"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
-msgstr ""
+msgstr "Legg til ny rad"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "Oppdater metadata"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
-msgstr ""
+msgstr "Fjern tomme radar"
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
@@ -1500,19 +1748,6 @@ msgstr "Hei!\n\nMe ynskjer å stadfesta at du er %(username)s. Dersom du er\nfyl
msgid "New comments"
msgstr "Nye innspel"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s sidan"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Marker alt lese"
@@ -1525,38 +1760,41 @@ msgstr "Marker alt lese"
msgid "Media tagged with: %(tag_name)s"
msgstr "Verk merka med: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Last ned"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Opphavleg"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Orsak, dette lydklippet fungerer ikkje fordi netlesaren din ikkje stør HTML5-lyd."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+"Orsak, lyden fungerer ikkje fordi netlesaren din stør ikkje HTML5 audio."
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Du kan skaffa ein moderne netlesar som kan spela av dette lydklippet hjå <a href=\"http://opera.com/download\">http://opera.com/download</a>."
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Du kan få ei moderne netlesar som kan spela lyden på <a "
+"href=\"http://getfirefox.com\">http://getfirefox.com</a>."
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Opphavleg fil"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM-fil (Vorbis-kodek)"
@@ -1564,70 +1802,70 @@ msgstr "WebM-fil (Vorbis-kodek)"
msgid "Created"
msgstr "Oppretta"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Bilete for %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF-fil"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspektiv"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Front"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Topp"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Side"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Last ned modell"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Filformat"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Objekthøgd"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Orsak, denne videoen fungerer ikkje\nfordi netlesaren din ikkje stør\nHTML5 video."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Du kan skaffa deg ein moderne netlesar som kan spela denne videoen hjå <a href=http://opera.com>http://opera.com</a> eller <a href=\"http://getfirefox.com\">http://getfirefox.com</a>."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "WebM-fil (VP8/Vorbis)"
@@ -1641,6 +1879,32 @@ msgstr "Hald oppsyn med statusen for prosessering av verka dine her."
msgid "Media in-processing"
msgstr "Verk under prosessesering"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Brukar"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "NÃ¥r opplasta"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Transkoding-prosess"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Ukjend"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1651,6 +1915,14 @@ msgstr "Ingen verk vert prosessert"
msgid "These uploads failed to process:"
msgstr "Klarte ikkje prosessera desse opplasta filene:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Grunn for feil"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadata for feil"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1660,6 +1932,10 @@ msgstr "Ingen feila filer."
msgid "Last 10 successful uploads"
msgstr "Dei siste ti opplastningane"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Opplasta"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1674,7 +1950,7 @@ msgid "Return to Reports Panel"
msgstr "Attende til rapporteringspanelet"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Rapport"
@@ -1700,6 +1976,10 @@ msgid ""
" "
msgstr "\n INNHALD AV\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n ER SLETTA\n "
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Grunn til rapportering:"
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1804,15 +2084,15 @@ msgstr "Ingen lukka rapportar."
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "Brukar: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "Returnet til brukarpanel"
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
-msgstr ""
+msgstr "Orsak, fann ikkje denne brukaren."
#: mediagoblin/templates/mediagoblin/moderation/user.html:53
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
@@ -1825,6 +2105,8 @@ msgid ""
"Someone has registered an account with this username, but it still has\n"
" to be activated."
msgstr ""
+"Nokon (du?) har registrert ein konto med dette brukarnamnet, men kontoen er "
+"ikkje aktivert (sjekk epost?)."
#: mediagoblin/templates/mediagoblin/moderation/user.html:66
#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
@@ -1837,11 +2119,11 @@ msgstr "%(username)s sin profil"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
msgid "BANNED until %(expiration_date)s"
-msgstr ""
+msgstr "UTESTENGD til %(expiration_date)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:72
msgid "Banned Indefinitely"
-msgstr ""
+msgstr "Utestengd på ubestemt tid"
#: mediagoblin/templates/mediagoblin/moderation/user.html:78
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
@@ -1862,76 +2144,77 @@ msgstr "Sjå gjennom samlingar"
#: mediagoblin/templates/mediagoblin/moderation/user.html:105
#, python-format
msgid "Active Reports on %(username)s"
-msgstr ""
+msgstr "Gjeldande rapportar på %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:112
msgid "Report ID"
-msgstr ""
+msgstr "Rapport-ID"
#: mediagoblin/templates/mediagoblin/moderation/user.html:113
msgid "Reported Content"
-msgstr ""
+msgstr "Rapportert innhald"
#: mediagoblin/templates/mediagoblin/moderation/user.html:114
msgid "Description of Report"
-msgstr ""
+msgstr "Skildring av rapport"
#: mediagoblin/templates/mediagoblin/moderation/user.html:122
#, python-format
msgid "Report #%(report_number)s"
-msgstr ""
+msgstr "Rapport #%(report_number)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "Rapportert innspel"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
-msgstr ""
+msgstr "Rapportert verk"
#: mediagoblin/templates/mediagoblin/moderation/user.html:142
#, python-format
msgid "No active reports filed on %(username)s"
-msgstr ""
+msgstr "Ingen aktive rapportar på %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:150
#, python-format
msgid "All reports on %(username)s"
-msgstr ""
+msgstr "Alle rapportar på %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:155
#, python-format
msgid "All reports that %(username)s has filed"
-msgstr ""
+msgstr "Alle rapportar som %(username)s har kome med"
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "Privilegiane til %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Privilegie"
+# Usikker på denne, må nesten bruka modereringa litt og sjå korleis det vert brukt.
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "Løyve gjeven"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Ja"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Nei"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Utesteng brukar"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "Slepp brukar innatt"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
@@ -1949,10 +2232,6 @@ msgstr "\nHer kan du slå opp brukarar og straffa dei."
msgid "Active Users"
msgstr "Aktive brukarar"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "Vart med"
@@ -1977,20 +2256,20 @@ msgstr "Legg til verk"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "â– Bloggpost av <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Legg att innspel"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Legg til dette innspelet"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Lagt til"
@@ -2007,17 +2286,17 @@ msgstr "%(collection_title)s av <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "Slett samling %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Sletta samlinga: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "Fjern %(media_title)s frå %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2062,12 +2341,12 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a> sine verk merka <a href=\"%(ta
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a> sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■Ser på <a href=\"%(user_url)s\">%(username)s</a> sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Førehandsvisning av innspel"
@@ -2182,6 +2461,14 @@ msgstr "I samling"
msgid "Add to a collection"
msgstr "Putt i samling"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Ting innspel"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Slå av innspel"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2218,6 +2505,10 @@ msgstr "nyare"
msgid "older"
msgstr "eldre"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Stad"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "Rapportér verk"
@@ -2226,38 +2517,38 @@ msgstr "Rapportér verk"
msgid "Tagged with"
msgstr "Merka med"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Klarte ikkje lesa biletefila."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Oops."
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Noko gjekk gale"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Bad Request (noko gjekk gale)"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "The request sent to the server is invalid, please double check it"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Ulovleg operasjon"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Orsak Dave, eg kan ikkje la deg gjera det!&lt;HAL2000&gt;</p>\n<p>Du prøvde å gjera noko du ikkje har løyve til. Prøvar du å sletta alle brukarkonti no igjen?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2325,69 +2616,69 @@ msgstr "Du kan bruka <a href=\"http://daringfireball.net/projects/markdown/basic
msgid "Reason for Reporting"
msgstr "Ã…rsak for rapportering"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Innspel er avslege"
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Vops, innspelet ditt var tomt."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Innspelet ditt er lagt til."
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Sjekk filene dine og prøv omatt."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Du må velja eller laga ei samling"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» er allereie i samling «%s»"
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» lagt til samling «%s»"
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Du sletta verket."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Du er i ferd med å sletta ein annan brukar sine verk. Trå varsamt."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Du fjerna fila frå samlinga."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Fila var ikkje fjerna fordi du ikkje var sikker."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Du er i ferd med å fjerna ei fil frå ein annan brukar si samling. Trå varsamt."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Samlinga «%s» sletta"
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "Sletta ikkje samlinga."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Du er i ferd med å sletta ein annan brukar si samling. Trå varsamt."
diff --git a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 11369e8d..00000000
--- a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pl/mediagoblin.po
index fa19b45e..e1c2f21e 100644
--- a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/pl/mediagoblin.po
@@ -1,89 +1,187 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
-#
# Translators:
-# Daniel Koć <daniel@xn--ko-wla.pl>, 2012
+# Daniel Koć <daniel@xn--ko-wla.pl>, 2014, 2016.
+# Daniel Koć <daniel@xn--ko-wla.pl>, 2012, 2016.
# Sergiusz Pawłowicz <transifex@pawlowicz.name>, 2013
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/mediagoblin/language/pl/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2016-02-13 10:59+0000\n"
+"Last-Translator: Daniel <daniel@xn--ko-wla.pl>\n"
+"Language-Team: Polish "
+"(http://www.transifex.com/projects/p/mediagoblin/language/pl/)\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.5.0\n"
"Generated-By: Babel 1.3\n"
-"Language: pl\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-POOTLE-MTIME: 1455361182.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
-msgstr "Niestety rejestracja w tym serwisie jest wyłączona."
+msgstr "Niestety, rejestracja w tym serwisie jest wyłączona."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
+msgstr "W tym serwisie zgłaszanie zostało wyłączone."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58 mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
-msgstr "Przepraszamy, autoryzacja jest wyłączona w tym systemie."
+msgstr "Niestety, uwierzytelnianie jest wyłączone w tym serwisie."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Nieprawidłowa nazwa konta albo niewłaściwy adres poczty elektronicznej."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Niniejsze pole nie jest przeznaczone na adres poczty elektronicznej."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Niniejsze pole wymaga podania adresu poczty elektronicznej."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
-msgstr "Niestety użytkownik o takiej nazwie już istnieje."
+msgstr "Niestety, użytkownik o takiej nazwie już istnieje."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
-msgstr "Niestety użytkownik z tym adresem e-mail już istnieje."
+msgstr "Niestety, użytkownik z tym adresem e-mail już istnieje."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408 mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "Klucz kontrolny albo identyfikator użytkownika jest nieprawidłowy."
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
+#: mediagoblin/auth/views.py:164
+msgid "Your email address has been verified. You may now login, edit your profile, and submit images!"
msgstr "Twój adres e-mail został zweryfikowany. Możesz się teraz zalogować, wypełnić opis swojego profilu i wysyłać grafiki!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Nieprawidłowy klucz weryfikacji lub identyfikator użytkownika."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Musisz się zalogować żebyśmy wiedzieli do kogo wysłać e-mail!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Twój adres e-mail już został zweryfikowany!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Wyślij ponownie e-mail weryfikujący."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
-#: mediagoblin/media_types/blog/forms.py:24
-#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} dodał(a) {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} dodał(a) {object} do {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} wytworzył(a) {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} utworzył(a) {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} usunął(-ęła) {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} nie lubi {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} polubił(a) {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} zaczął(-ęła) śledzić {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} polubił(a) {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} wysłał(a) {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} wysłał(a) {object} do {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} udostępnił(a) {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} wycofał(a) {object} z ulubionych"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} przestał(a) śledzić {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} przestał(a) lubić {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} przestał(a) udostępniać {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} zaktualizował(a) {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} otagował(a) {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "grafika"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "komentarz"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "kolekcja"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "film"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "nagranie dźwiękowe"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "osoba"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "obiekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90 mediagoblin/media_types/blog/forms.py:24 mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61 mediagoblin/templates/mediagoblin/moderation/media_panel.html:40 mediagoblin/templates/mediagoblin/moderation/media_panel.html:69 mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Tytuł"
@@ -91,16 +189,17 @@ msgstr "Tytuł"
msgid "Description of this work"
msgstr "Opis tej pracy"
-#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56 mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr "Możesz formatować tekst za pomocą składni \n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a>."
+msgstr ""
+"Możesz formatować tekst za pomocą składni \n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a>."
-#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
-#: mediagoblin/submit/forms.py:45
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27 mediagoblin/submit/forms.py:45
msgid "Tags"
msgstr "Znaczniki"
@@ -108,29 +207,25 @@ msgstr "Znaczniki"
msgid "Separate tags by commas."
msgstr "Rozdzielaj znaczniki przecinkami."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Slug"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Slug nie może być pusty"
#: mediagoblin/edit/forms.py:44
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
+msgid "The title part of this media's address. You usually don't need to change this."
msgstr "Fragment adresu mediów zawierający tytuł. Zwykle nie ma potrzeby aby go zmieniać."
-#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
-#: mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29 mediagoblin/submit/forms.py:50 mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
msgstr "Licencja"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
-msgstr "Biogram"
+msgstr "Opis konta"
#: mediagoblin/edit/forms.py:60
msgid "Website"
@@ -140,125 +235,129 @@ msgstr "Strona internetowa"
msgid "This address contains errors"
msgstr "Ten adres zawiera błędy"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Miasto"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Powiadamiaj mnie e-mailem o komentarzach do moich mediów"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Włącz powiadomienia dotyczące wydarzeń"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Ulubiona licencja"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "To będzie twoja domyślna licencja dla wgrywanych mediów."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Tytuł nie może być pusty"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64 mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Opis tej kolekcji"
-#: mediagoblin/edit/forms.py:99
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
+#: mediagoblin/edit/forms.py:100
+msgid "The title part of this collection's address. You usually don't need to change this."
msgstr "Część adresu zawierająca tytuł. Zwykle nie musisz tego zmieniać."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Stare hasło"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Wprowadź swoje stare hasło aby udowodnić, że to twoje konto."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Nowe hasło"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Nowy adres poczty elektronicznej"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28 mediagoblin/plugins/basic_auth/forms.py:43 mediagoblin/plugins/ldap/forms.py:39 mediagoblin/templates/mediagoblin/edit/edit_account.html:67 mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Hasło"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Wprowadź swoje hasło aby potwierdzić, że jesteś właścicielem konta."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identyfikator"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Wartość"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Adres z tym slugiem dla tego użytkownika już istnieje."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Edytujesz media innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Dodałeś załącznik %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
-msgstr "Masz możliwość edycji tylko własnego profilu."
+msgstr "Możesz edytować tylko własny profil."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Edytujesz profil innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Zapisano zmiany profilu"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Zapisano ustawienia konta"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Nieznana aplikacja, wycofanie uprawnień nie powiodło się"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Wycofanie uprawnień dla aplikacji powiodło się"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Musisz potwierdzić, że chcesz skasować swoje konto."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134 mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Kolekcja \"%s\" już istnieje!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Kolekcja tego użytkownika z takim slugiem już istnieje."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Edytujesz kolekcję innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Twój adres poczty elektronicznej został potwierdzony."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Nieprawidłowe hasło"
@@ -289,84 +388,89 @@ msgstr "Opuszczam \"%s\"; już jest gotowe.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Znaleziono stary odnośnik dla \"%s\"; usuwam.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
+"Więcej informacji jak prawidłowo uruchamiać ten skrypt\n"
+"(i jak formatować plik CSV z metadanymi) znajdziesz na stronie\n"
+"dokumentacji MediaGoblina dotyczącej wysyłki z wiersza poleceń\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "Nazwa użytkownika, do którego należą te media"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "Położenie pliku CSV zawierającego metadane."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
-msgstr ""
+msgstr "Nie przetwarzaj natychmiast, przekaż do kolejki celery"
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Niestety użytkownik o nazwie '{username}' nie istnieje"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "Nie znaleziono pliku w {path}, użyj opcji -h aby uzyskać pomoc"
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
+"Błąd dotyczący '{media_id}' wartość '{error_path}': {error_msg}\n"
+"Metadane nie zostały wysłane."
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
+"BÅÄ„D: Lokalny plik {filename} jest niedostÄ™pny.\n"
+"{filename} nie zostanie wysłany."
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
+"Plik {filename} został wysłany!\n"
+"Zajrzyj do panelu przetwarzania w twoim serwisie, aby się upewnić\n"
+"że przesyłanie zakończyło się powodzeniem."
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
-msgstr ""
+msgstr "BÅÄ„D: Ten plik jest wiÄ™kszy niż dopuszczalny limit w tym serwisie."
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
-msgstr ""
+msgstr "BÅÄ„D: Ten plik przekracza dostÄ™pny limit danych wysyÅ‚anych przez użytkownika."
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "BÅÄ„D: Ten użytkownik już przekroczyÅ‚ dostÄ™pny limit wysyÅ‚ania danych."
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "Wysyłka {files_uploaded} z {files_attempted} plików powiodła się"
#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
+msgid "CSRF cookie not present. This is most likely the result of a cookie blocker or somesuch.<br/>Make sure to permit the settings of cookies for this domain."
msgstr "Ciasteczko CSFR nie jest dostępne. Najprawdopodobniej stosujesz jakąś formę blokowania ciasteczek.<br/>Upewnij się, że nasz serwer może zakładać ciasteczka w twojej przeglądarce."
-#: mediagoblin/media_types/__init__.py:79
-#: mediagoblin/media_types/__init__.py:101
+#: mediagoblin/media_types/__init__.py:79 mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
msgstr "NIestety, nie obsługujemy tego typu plików :-("
-#: mediagoblin/media_types/blog/forms.py:26
-#: mediagoblin/media_types/blog/forms.py:35
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/media_types/blog/forms.py:26 mediagoblin/media_types/blog/forms.py:35 mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Opis"
@@ -374,131 +478,105 @@ msgstr "Opis"
msgid "I am sure I want to delete this"
msgstr "Na pewno chcę to usunąć"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Hura! Wysłano!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Hurra! Edytowany wpis został wysłany"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Blog został usunięty."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328 mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Media nie zostały usunięte ponieważ nie potwierdziłeś, że jesteś pewien."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "Za chwilę możesz usunąć bloga innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Blog nie został usunięty, ponieważ nie masz do tego uprawnień."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Dodaj wpis"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Edycja bloga"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Usuń bloga"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92 mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35 mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76 mediagoblin/templates/mediagoblin/user_pages/collection.html:52 mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Edytuj"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93 mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39 mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39 mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56 mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Usuń"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> Przejdź do trybu listy </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr "Brak wpisów"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30 mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "Na pewno usunąć %(title)s?"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47 mediagoblin/templates/mediagoblin/edit/attachments.html:61 mediagoblin/templates/mediagoblin/edit/delete_account.html:42 mediagoblin/templates/mediagoblin/edit/edit.html:41 mediagoblin/templates/mediagoblin/edit/edit_collection.html:32 mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60 mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67 mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Anuluj"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48 mediagoblin/templates/mediagoblin/edit/delete_account.html:44 mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56 mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Delete permanently"
msgstr "Usuń na stałe"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Utwórz/edytuj bloga"
-#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37 mediagoblin/plugins/oauth/templates/oauth/client/register.html:29 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39 mediagoblin/templates/mediagoblin/submit/collection.html:30 mediagoblin/templates/mediagoblin/submit/start.html:39 mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
msgid "Add"
msgstr "Dodaj"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Utwórz/edytuj wpis blogowy."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Utwórz/edytuj wpis blogowy."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "Blog użytkownika %(blog_owner_name)s"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Obejrzyj"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Utwórz bloga"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr "Panel bloga"
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
@@ -506,43 +584,103 @@ msgstr "nie dało się uruchomić unoconv, sprawdź log"
#: mediagoblin/media_types/video/processing.py:44
msgid "Video transcoding failed"
-msgstr "Konwersja wideo nie powiodła się"
+msgstr "Przetwarzanie filmu nie powiodło się"
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
-msgstr ""
+msgstr "Wycofaj uprawnienia"
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr ""
+msgstr "Zablokuj użytkownika"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
-msgstr ""
+msgstr "Wyślij wiadomość do użytkownika"
#: mediagoblin/moderation/forms.py:24
msgid "Delete the content"
-msgstr ""
+msgstr "Usuń treść"
#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
-msgstr ""
+msgstr "Blokada użytkownika do:"
#: mediagoblin/moderation/forms.py:57
msgid "Why are you banning this User?"
-msgstr ""
+msgstr "Dlaczego banujesz tego użytkownika?"
#: mediagoblin/moderation/forms.py:109
msgid "What action will you take to resolve the report?"
-msgstr ""
+msgstr "Jakie działanie chcesz podjąć aby rozstrzygnąć zgłoszenie?"
#: mediagoblin/moderation/forms.py:115
msgid "What privileges will you take away?"
+msgstr "Jakie uprawnienia chcesz odebrać?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Powód zbanowania:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Wiadomość do użytkownika:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Treść rozstrzygnięcia:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
msgstr ""
+"\n"
+"{mod} odebrał(a) użytkownikowi {user} uprawnienia {privilege}."
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
msgstr ""
+"\n"
+"{mod} zablokował(a) konto {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "do {date}"
+
+#: mediagoblin/moderation/tools.py:56 mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "na zawsze"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} wysłał(a) majlem ostrzeżenie użytkownikowi {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} usunął(-ęła) komentarz."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} usunął(-ęła) medium."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Ostrzeżenie od"
#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
@@ -556,46 +694,43 @@ msgstr "Zaprenumerowano komentarze do %s!"
#: mediagoblin/notifications/views.py:48
#, python-format
msgid "You will not receive notifications for comments on %s."
-msgstr "Nie będziesz otrzymywać komentarzy do %s."
+msgstr "Nie będziesz otrzymywać powiadomień o komentarzach do %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "Musisz podać oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "Nie znaleziono żetonu żądania."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157 mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
-msgstr ""
+msgstr "Niestety rozmiar pliku jest zbyt duży."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160 mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
+msgstr "Wysłanie tego pliku spowodowałoby przekroczenie twojego limitu."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164 mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
-msgstr ""
+msgstr "Twój limit wysyłania został już wykorzystany."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "Podaj URL medium do oznaczenia jako istotne"
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Podstawowy"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Dodatkowy"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Kolejny"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
@@ -603,11 +738,11 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Jak to działa?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "Jak oznaczać media jako istotne?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
@@ -624,7 +759,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "Czy istnieje inny sposób zarządzania istotnymi mediami?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -632,7 +767,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -650,7 +785,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
msgid "What is a Primary Feature? What is a Secondary Feature?"
-msgstr ""
+msgstr "Czym są media pierwszorzędne i drugorzędne?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
@@ -685,7 +820,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
msgid "How to unfeature a piece of media?"
-msgstr ""
+msgstr "Jak wycofać oznaczenie istotności mediów?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
@@ -697,7 +832,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "UWAGA:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -713,77 +848,81 @@ msgid ""
"\n"
"Feature Media "
msgstr ""
+"\n"
+"Oznacz jako istotne "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
msgid "Feature"
-msgstr ""
+msgstr "Istotne"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
msgid ""
"\n"
"Unfeature Media "
msgstr ""
+"\n"
+"Wycofaj oznaczenie istotności "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
msgid "Unfeature"
-msgstr ""
+msgstr "Wycofaj istotność"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
msgid ""
"\n"
"Promote Feature "
msgstr ""
+"\n"
+"Promowanie "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
msgid "Promote"
-msgstr ""
+msgstr "Promuj"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
msgid ""
"\n"
"Demote Feature "
msgstr ""
+"\n"
+"Zmniejszanie istotności "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
msgid "Demote"
-msgstr ""
+msgstr "Zmniejsz istotność"
-#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30 mediagoblin/templates/mediagoblin/root.html:32
msgid "Most recent media"
msgstr "Najnowsze media"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
-msgstr ""
+msgstr "Nic nie jest obecnie oznaczone jako istotne."
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "PrzeglÄ…daj najnowsze media"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "Panel istotnych mediów"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
@@ -791,6 +930,9 @@ msgid ""
"\tyour web browser does not support HTML5\n"
"\taudio."
msgstr ""
+"Niestety, nie możesz odsłuchać tego nagrania,\n"
+"\tbo twoja przeglądarka nie obsługuje dźwięku\n"
+"\tw HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
@@ -799,33 +941,32 @@ msgid ""
"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
-#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43 mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"Niestety, nie możesz obejrzeć tego filmu,\n"
+" bo twoja przeglądarka nie obsługuje filmów\n"
+" w HTML5."
-#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
-#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46 mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
+"Możesz pobrać porządną przeglądarkę, \n"
+" która jest w stanie odtworzyć ten film, ze strony <a "
+"href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+#: mediagoblin/plugins/basic_auth/forms.py:24 mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27 mediagoblin/plugins/persona/forms.py:24 mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
msgid "Username"
msgstr "Użytkownik"
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
+#: mediagoblin/plugins/basic_auth/forms.py:32 mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31 mediagoblin/plugins/persona/forms.py:28 mediagoblin/plugins/persona/forms.py:39
msgid "Email address"
msgstr "Adres e-mail"
@@ -842,9 +983,7 @@ msgid "Username or email"
msgstr "Użytkownik lub adres e-mail"
#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
+msgid "If that email address (case sensitive!) is registered an email has been sent with instructions on how to change your password."
msgstr "Jeśli ten adres poczty elektronicznej istnieje (uwzględniając wielkość liter!), wysłano na niego list z instrukcją, w jaki sposób możesz zmienić swoje hasło."
#: mediagoblin/plugins/basic_auth/views.py:65
@@ -852,14 +991,11 @@ msgid "Couldn't find someone with that username."
msgstr "Nie potrafię znaleźć nikogo o tej nazwie użytkownika."
#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
+msgid "An email has been sent with instructions on how to change your password."
msgstr "Wysłano e-mail z instrukcjami jak zmienić hasło."
#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
+msgid "Could not send password recovery email as your username is inactive or your account's email address has not been verified."
msgstr "Nie udało się wysłać e-maila w celu odzyskania hasła, ponieważ twoje konto jest nieaktywne lub twój adres e-mail nie został zweryfikowany."
#: mediagoblin/plugins/basic_auth/views.py:123
@@ -871,17 +1007,14 @@ msgid "You can now log in using your new password."
msgstr "Teraz możesz się zalogować używając nowego hasła."
#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
+msgid "You are no longer an active user. Please contact the system admin to reactivate your account."
+msgstr "Twoje konto nie jest już aktywne. Skontaktuj się z administratorem aby je ponownie aktywować."
#: mediagoblin/plugins/basic_auth/views.py:215
msgid "Your password was changed successfully"
msgstr "Twoje hasło zostało zmienione"
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28 mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
msgid "Set your new password"
msgstr "Podaj swoje nowe hasło"
@@ -889,14 +1022,12 @@ msgstr "Podaj swoje nowe hasło"
msgid "Set password"
msgstr "Podaj hasło"
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28 mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
#, python-format
msgid "Changing %(username)s's password"
msgstr "Zmieniam hasło użytkownika %(username)s"
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45 mediagoblin/templates/mediagoblin/edit/change_email.html:40
msgid "Save"
msgstr "Zachowaj"
@@ -910,10 +1041,9 @@ msgstr "Utwórz je tutaj!"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
msgid "Change your password."
-msgstr ""
+msgstr "Zmień hasło."
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23 mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
msgid "Recover password"
msgstr "Odtwórz hasło"
@@ -925,26 +1055,22 @@ msgstr "Wyślij instrukcje"
msgid "Forgot your password?"
msgstr "Zapomniałeś hasła?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Położenie"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Zobacz na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
msgid "Sign in to create an account!"
-msgstr ""
+msgstr "Zarejestruj się aby utworzyć konto!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Metadane"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "Edycja metadanych"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
@@ -966,7 +1092,9 @@ msgstr "Nazwa klienta OAuth"
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
-msgstr "To będzie widoczne dla użytkowników, pozwalając⎠twojej aplikacji uwierzytelniać się jako oni."
+msgstr ""
+"To będzie widoczne dla użytkowników, pozwalając\n"
+" twojej aplikacji działać w ich imieniu."
#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
@@ -980,7 +1108,13 @@ msgid ""
" <strong>Public</strong> - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr "<strong>Confidential</strong> - Klient może wysyłać żądania\n do instancji GNU MediaGoblin, która nie może zostać\n przechwycona przez agenta (np. klient po stronie serwera).<br />\n <strong>Public</strong> - Klient nie może wysyłać poufnych\n żądań do instakcji GNU MediaGoblin (np. skrypt JavaScript\n po stronie klienta)."
+msgstr ""
+"<strong>Confidential</strong> - Klient może wysyłać żądania\n"
+" do instancji GNU MediaGoblin, która nie może zostać\n"
+" przechwycona przez agenta (np. klient po stronie serwera).<br />\n"
+" <strong>Public</strong> - Klient nie może wysyłać poufnych\n"
+" żądań do instakcji GNU MediaGoblin (np. skrypt JavaScript\n"
+" po stronie klienta)."
#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
@@ -990,13 +1124,15 @@ msgstr "Przekierowanie URI"
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
-msgstr "Przekierowanie URI dla aplikacji, to pole\n jest <strong>wymagane</strong> dla publicznych klientów."
+msgstr ""
+"Przekierowanie URI dla aplikacji, to pole\n"
+" jest <strong>wymagane</strong> dla publicznych klientów."
#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "To pole jest wymagane dla klientów publicznych"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Klient {0} został zarejestrowany!"
@@ -1008,9 +1144,7 @@ msgstr "Połączenia do OAuth"
msgid "Your OAuth clients"
msgstr "Twoi klienci OAuth"
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/__init__.py:97 mediagoblin/plugins/openid/views.py:271 mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Przepraszamy, ale istnieje już konto zarejestrowane z tym OpenID."
@@ -1018,52 +1152,45 @@ msgstr "Przepraszamy, ale istnieje już konto zarejestrowane z tym OpenID."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Przepraszamy, serwer OpenID nie został znaleziony"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Nie znaleziono serwisu OpenID dla %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Potwierdzenie %s nie powiodło się: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Potwierdzenie anulowane"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
-msgstr "Twój OpenID url został pomyślnie zachowany."
+msgstr "Twój URL do OpenID został pomyślnie zachowany."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341 mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr ""
+msgstr "Nie możesz usunąć URL-a OpenID jeśli nie masz ustawionego hasła"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346 mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Wskazane OpenID nie jest powiÄ…zane z niniejszym kontem."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "Konto OpenID zostało pomyślnie usunięte."
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34 mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
msgid "Add an OpenID"
msgstr "Dodaj konto OpenID"
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
msgid "Delete an OpenID"
msgstr "Usuń konto OpenID"
@@ -1071,18 +1198,12 @@ msgstr "Usuń konto OpenID"
msgid "OpenID's"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36 mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57 mediagoblin/templates/mediagoblin/base.html:124 mediagoblin/templates/mediagoblin/auth/login.html:28 mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
msgid "Log in"
msgstr "Zaloguj siÄ™"
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39 mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
msgstr "Logowanie nie powiodło się!"
@@ -1104,28 +1225,25 @@ msgstr "Lub zarejestruj siÄ™ z OpenID!"
#: mediagoblin/plugins/persona/__init__.py:90
msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
+msgstr "Niestety to konto jest już zarejestrowane na ten adres Persony."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Konto związane z Persona zostało pomyślnie usunięte."
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
+#: mediagoblin/plugins/persona/views.py:146
+msgid "You can't delete your only Persona email address unless you have a password set."
msgstr "Nie możesz usunąć adresu poczty elektronicznej powiązanego z systemem Persona, gdyż twoje konto zostanie wtedy bez jakiegokolwiek hasła."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Niniejsze konto nie jest powiÄ…zane z adresem poczty elektronicznej w Persona."
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr ""
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr "Niestety to konto jest już zarejestrowane na ten adres majlowy Persony."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Twój adres poczty elektronicznej powiązany z Persona został zachowany pomyślnie."
@@ -1139,7 +1257,7 @@ msgstr "Dodaj adres poczty elektronicznej powiÄ…zany z kontem Persona"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
msgid "Persona's"
-msgstr ""
+msgstr "Persona"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
msgid "Or login with Persona!"
@@ -1149,21 +1267,21 @@ msgstr "Lub zaloguj z kontem Persona!"
msgid "Or register with Persona!"
msgstr "Lub zarejestruj z kontem Persona!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Niewłaściwy plik dla tego rodzaju mediów."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "Kopiowanie do dysku publicznego nie powiodło się."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
-msgstr ""
+msgstr "Nie znaleziono prawidłowego pliku do przetworzenia"
#: mediagoblin/submit/forms.py:30
msgid "Max file size: {0} mb"
-msgstr ""
+msgstr "Maksymalny rozmiar pliku: {0} MB"
#: mediagoblin/submit/forms.py:34
msgid "File"
@@ -1175,95 +1293,88 @@ msgid ""
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
+"Możesz użyć\n"
+" składni <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> do formatowania."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Musisz podać plik."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Kolekcja \"%s\" została dodana!"
#: mediagoblin/templates/mediagoblin/banned.html:20
msgid "You are Banned."
-msgstr ""
+msgstr "To konto jest zablokowane."
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
+#: mediagoblin/templates/mediagoblin/banned.html:24 mediagoblin/templates/mediagoblin/error.html:24
msgid "Image of goblin stressing out"
msgstr "Grafika zestresowanego goblina"
#: mediagoblin/templates/mediagoblin/banned.html:26
msgid "You have been banned"
-msgstr ""
+msgstr "To konto zostało zablokowane"
#: mediagoblin/templates/mediagoblin/banned.html:28
#, python-format
msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
+msgstr "do %(until_when)s"
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Zweryfikuj swój adres e-mail!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106 mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "wyloguj siÄ™"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "konto <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Zmień ustawienia konta"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+#: mediagoblin/templates/mediagoblin/base.html:144 mediagoblin/templates/mediagoblin/base.html:167 mediagoblin/templates/mediagoblin/moderation/media_panel.html:21 mediagoblin/templates/mediagoblin/moderation/media_panel.html:27 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
msgid "Media processing panel"
msgstr "Panel przetwarzania mediów"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Wyloguj siÄ™"
-#: mediagoblin/templates/mediagoblin/base.html:155
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+#: mediagoblin/templates/mediagoblin/base.html:157 mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Dodaj media"
-#: mediagoblin/templates/mediagoblin/base.html:158
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+#: mediagoblin/templates/mediagoblin/base.html:160 mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Utwórz nową kolekcję"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Moderacja:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
-msgstr ""
+msgstr "Panel użytkowników"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
-msgstr ""
+msgstr "Panel zgłoszeń"
#: mediagoblin/templates/mediagoblin/api/authorize.html:21
msgid "Authorization"
-msgstr "Uwierzytelnianie"
+msgstr "Uprawnienia"
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26 mediagoblin/templates/mediagoblin/api/authorize.html:53
msgid "Authorize"
-msgstr "Uwierzytelnij"
+msgstr "Nadaj uprawnienia"
#: mediagoblin/templates/mediagoblin/api/authorize.html:29
msgid "You are logged in as"
@@ -1271,7 +1382,7 @@ msgstr "JesteÅ› zalogowany jako"
#: mediagoblin/templates/mediagoblin/api/authorize.html:33
msgid "Do you want to authorize "
-msgstr "Czy chcesz uwierzytelnić"
+msgstr "Czy chcesz nadać uprawnienia"
#: mediagoblin/templates/mediagoblin/api/authorize.html:37
msgid "an unknown application"
@@ -1299,18 +1410,17 @@ msgstr "Zmień swoje dane"
#: mediagoblin/templates/mediagoblin/api/oob.html:21
msgid "Authorization Finished"
-msgstr "Uwierzytelnianie zakończone."
+msgstr "Nadawanie uprawnień zakończone"
#: mediagoblin/templates/mediagoblin/api/oob.html:26
msgid "Authorization Complete"
-msgstr "Uwierzytelnianie zakończone."
+msgstr "Nadawanie uprawnień zakończone"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Skopiuj i wklej to do swojego klienta:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Skopiuj i wklej ten <strong>kod weryfikacji</strong> do swojego klienta:"
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
+#: mediagoblin/templates/mediagoblin/auth/register.html:28 mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
msgstr "Utwórz konto!"
@@ -1327,26 +1437,27 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "Cześć %(username)s,\n\naby aktywować twoje konto GNU MediaGoblin, otwórz następującą stronę w swojej przeglądarce:\n\n%(verification_url)s"
+msgstr ""
+"Cześć %(username)s,\n"
+"\n"
+"aby aktywować twoje konto GNU MediaGoblin, otwórz następującą stronę\n"
+"w swojej przeglÄ…darce:\n"
+"\n"
+"%(verification_url)s"
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgid "Powered by <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
msgstr "Napędzane przez oprogramowanie <a href=\"http://mediagoblin.org/\" title='w wersji %(version)s'>MediaGoblin</a>, będące częścią projektu <a href=\"http://gnu.org/\">GNU</a>."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
+msgid "Released under the <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Source code</a> available."
msgstr "Opublikowane na licencji <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. Dostępny jest <a href=\"%(source_link)s\">kod źródłowy</a>."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
msgid "Terms of Service"
-msgstr ""
+msgstr "Warunki korzystania"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
msgid "Explore"
@@ -1354,18 +1465,14 @@ msgstr "Odkrywaj"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Cześć, witaj na stronie MediaGoblin!"
+msgstr "Witaj na stronie MediaGoblin!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Ten serwis działa w oparciu o <a href=\"http://mediagoblin.org\">MediaGoblin</a>, świetne oprogramowanie do publikowania mediów."
+msgid "This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an extraordinarily great piece of media hosting software."
+msgstr "Ten serwis działa w oparciu o <a href=\"http://mediagoblin.org\">MediaGoblin</a>, znakomite oprogramowanie do publikowania multimediów."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
+msgid "To add your own media, place comments, and more, you can log in with your MediaGoblin account."
msgstr "Aby dodawać swoje pliki, komentować i wykonywać inne czynności, możesz się zalogować na swoje konto MediaGoblin."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
@@ -1378,49 +1485,78 @@ msgid ""
" >Create an account at this site</a>\n"
" or"
msgstr ""
+"\n"
+" >Załóż konto w tym serwisie</a>\n"
+" lub"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
msgstr ""
+"\n"
+"<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Zainstaluj MediaGoblina na własnym serwerze</a>"
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23 mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
msgid "MediaGoblin logo"
msgstr "Logo MediaGoblin"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23 mediagoblin/templates/mediagoblin/edit/attachments.html:35
#, python-format
msgid "Editing attachments for %(media_title)s"
msgstr "Edycja załączników do %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44 mediagoblin/templates/mediagoblin/user_pages/media.html:205 mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Załączniki"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57 mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Dodaj załącznik"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63 mediagoblin/templates/mediagoblin/edit/edit.html:42 mediagoblin/templates/mediagoblin/edit/edit_account.html:47 mediagoblin/templates/mediagoblin/edit/edit_collection.html:33 mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Zapisz zmiany"
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23 mediagoblin/templates/mediagoblin/edit/change_email.html:33
#, python-format
msgid "Changing %(username)s's email"
msgstr "Zmieniam konto poczty elektronicznej dla %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21 mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Wycofaj uprawnienia aplikacji"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Wycofaj uprawnienia aplikacji"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+"Te aplikacje mają dostęp do twojego konta GNU MediaGoblin. Wycofanie\n"
+" zezwolenia spowoduje, że nie będą już miały takiego dostępu."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Brak zezwoleń dla aplikacji."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Typ:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Dozwolone:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60 mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24 mediagoblin/templates/mediagoblin/media_displays/image.html:39 mediagoblin/templates/mediagoblin/moderation/report.html:57 mediagoblin/templates/mediagoblin/moderation/report.html:120 mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151 mediagoblin/templates/mediagoblin/user_pages/media.html:147 mediagoblin/templates/mediagoblin/user_pages/media.html:182 mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s temu"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1430,14 +1566,12 @@ msgstr "Czy naprawdę skasować użytkownika '%(user_name)s' oraz usunąć wszys
msgid "Yes, really delete my account"
msgstr "Tak, naprawdę chcę skasować swoje konto"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23 mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
msgid "Editing %(media_title)s"
msgstr "Edytowanie %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28 mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr "Zmiana ustawień konta %(username)s"
@@ -1446,7 +1580,7 @@ msgstr "Zmiana ustawień konta %(username)s"
msgid "Delete my account"
msgstr "Usuń moje konto"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Adres poczty elektronicznej"
@@ -1455,8 +1589,7 @@ msgstr "Adres poczty elektronicznej"
msgid "Editing %(collection_title)s"
msgstr "Edycja %(collection_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23 mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Edycja profilu %(username)s"
@@ -1464,11 +1597,11 @@ msgstr "Edycja profilu %(username)s"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
msgid "Metadata for \"%(media_name)s\""
-msgstr ""
+msgstr "Metadane \"%(media_name)s\""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "Metadane"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
@@ -1476,7 +1609,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "Aktualizacja metadanych"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
@@ -1495,68 +1628,63 @@ msgid ""
"If you are not %(username)s or didn't request an email change, you can ignore\n"
"this email."
msgstr ""
+"Witaj,\n"
+"\n"
+"Chcemy się upewnić, że jesteś %(username)s. Jeśli tak, to \n"
+"kliknij poniższy odnośnik, aby potwierdzić twój nowy adres majlowy.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"Jeśli nie jesteś %(username)s lub nie próbujesz zmienić adresu majlowego,\n"
+"po prostu zignoruj tę wiadomość."
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
msgid "New comments"
msgstr "Nowe komentarze"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s temu"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Oznacz wszystkie jako przeczytane"
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30 mediagoblin/templates/mediagoblin/listings/collection.html:35 mediagoblin/templates/mediagoblin/listings/tag.html:30 mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
msgstr "Media ze znacznikami: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36 mediagoblin/templates/mediagoblin/media_displays/audio.html:58 mediagoblin/templates/mediagoblin/media_displays/pdf.html:69 mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Pobierz"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Oryginał"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Niestety, ten plik dźwiękowy nie zostanie odtworzony, \n\tponieważ ta przeglądarka nie obsługuje znaczników \n\tdźwięku w HTML5."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+"Niestety, nie możesz odsłuchać tego nagrania, \n"
+"\t bo twoja przeglądarka nie obsługuje dźwięku \n"
+"\t w HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Proszę pobrać przeglądarkę, która obsługuje \n\tdźwięk w HTML5, pod adresem <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Możesz pobrać porządną przeglądarkę, \n"
+" która jest w stanie odtworzyć to nagranie, ze strony <a "
+"href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62 mediagoblin/templates/mediagoblin/media_displays/pdf.html:75 mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Oryginalny plik"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "plik WebM (kodek Vorbis)"
@@ -1564,95 +1692,114 @@ msgstr "plik WebM (kodek Vorbis)"
msgid "Created"
msgstr "Utworzono"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60 mediagoblin/templates/mediagoblin/media_displays/stl.html:90 mediagoblin/templates/mediagoblin/media_displays/stl.html:96 mediagoblin/templates/mediagoblin/media_displays/stl.html:102 mediagoblin/templates/mediagoblin/media_displays/stl.html:108 mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65 mediagoblin/templates/mediagoblin/user_pages/media.html:63 mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Grafika dla %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "Plik PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspektywa"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "PoczÄ…tek"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Góra"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
-msgstr "Krawędź"
+msgstr "Z boku"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Pobierz model"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Format pliku"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Wysokość obiektu"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
-msgstr "Niestety ten materiaÅ‚ nie bÄ™dzie widocznyâŽ, ponieważ twoja przeglÄ…darka nie⎠osbÅ‚uguje formatu HTML5."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
-msgstr "Możesz pobrać porządną przeglądarkę, która jest w stanie odtworzyć ten materiał filmowy, ze strony <a href=\"http://getfirefox.com/\">⎠http://getfirefox.com</a>!"
+msgstr ""
+"Możesz pobrać porządną przeglądarkę, \n"
+" która jest w stanie odtworzyć ten film, ze strony <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "Plik WebM (VP8/Vorbis)"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
+msgid "Here you can track the state of media being processed on this instance."
msgstr "Tu możesz śledzić stan przetwarzania mediów na tym serwerze."
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
msgid "Media in-processing"
msgstr "Przetwarzane media"
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38 mediagoblin/templates/mediagoblin/moderation/media_panel.html:67 mediagoblin/templates/mediagoblin/moderation/media_panel.html:98 mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "Identyfikator"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39 mediagoblin/templates/mediagoblin/moderation/media_panel.html:68 mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Użytkownik"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41 mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Data wysłania"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Postęp przetwarzania"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Nieznane"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
msgstr "Żadne media nie są obecnie przetwarzane"
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
msgid "These uploads failed to process:"
msgstr "NIe udało się przesłać tych plików:"
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Przyczyna błędu"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadane błędu"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
msgstr "Brak nieprzetworzonych wpisów!"
@@ -1660,27 +1807,29 @@ msgstr "Brak nieprzetworzonych wpisów!"
msgid "Last 10 successful uploads"
msgstr "Ostatnie 10 udanych wysyłek"
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Przesłane"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113 mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
msgstr "Na razie nie przetworzono żadnego wpisu!"
#: mediagoblin/templates/mediagoblin/moderation/report.html:27
msgid "Sorry, no such report found."
-msgstr ""
+msgstr "Niestety, brak takiego zgłoszenia."
#: mediagoblin/templates/mediagoblin/moderation/report.html:33
msgid "Return to Reports Panel"
-msgstr ""
+msgstr "Powrót do panelu zgłoszeń"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35 mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
-msgstr ""
+msgstr "Zgłoś problem"
#: mediagoblin/templates/mediagoblin/moderation/report.html:38
msgid "Reported comment"
-msgstr ""
+msgstr "Zgłoszony komentarz"
#: mediagoblin/templates/mediagoblin/moderation/report.html:83
#, python-format
@@ -1689,6 +1838,9 @@ msgid ""
" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
" "
msgstr ""
+"\n"
+" ■Media zgłoszone przez użytkownika <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report.html:92
#, python-format
@@ -1699,33 +1851,39 @@ msgid ""
" HAS BEEN DELETED\n"
" "
msgstr ""
+"\n"
+" DANE NALEŻĄCE DO UŻYTKOWNIKA\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" ZOSTAÅY USUNIĘTE\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Powód zgłoszenia:"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:133
-#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133 mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
-msgstr ""
+msgstr "Rozstrzygnij"
-#: mediagoblin/templates/mediagoblin/moderation/report.html:137
-#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137 mediagoblin/templates/mediagoblin/moderation/report.html:157
msgid "Resolve This Report"
-msgstr ""
+msgstr "Rozstrzygnij zgłoszenie"
#: mediagoblin/templates/mediagoblin/moderation/report.html:149
msgid "Status"
-msgstr ""
+msgstr "Stan"
#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
-msgstr ""
+msgstr "ROZSTRZYGNIĘTE"
#: mediagoblin/templates/mediagoblin/moderation/report.html:159
msgid "You cannot take action against an administrator"
-msgstr ""
+msgstr "Nie można wysłać zgłoszenia przeciw administratorowi"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22 mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
msgid "Report panel"
-msgstr ""
+msgstr "Panel zgłoszeń"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
msgid ""
@@ -1733,29 +1891,29 @@ msgid ""
" Here you can look up open reports that have been filed by users.\n"
" "
msgstr ""
+"\n"
+" Tu możesz przeglądać otwarte zgłoszenia wysłane przez użytkowników.\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
msgid "Active Reports Filed"
-msgstr ""
+msgstr "Aktywne zgłoszenia"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77 mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
msgid "Offender"
-msgstr ""
+msgstr "Naruszyciel"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
msgid "When Reported"
-msgstr ""
+msgstr "Data zgłoszenia"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79 mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
msgid "Reported By"
-msgstr ""
+msgstr "Zgłoszone przez"
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80 mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
msgid "Reason"
-msgstr ""
+msgstr "Powód"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
#, python-format
@@ -1764,6 +1922,9 @@ msgid ""
" Comment Report #%(report_id)s\n"
" "
msgstr ""
+"\n"
+" Zgłoszenie komentarza %(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
#, python-format
@@ -1772,22 +1933,25 @@ msgid ""
" Media Report #%(report_id)s\n"
" "
msgstr ""
+"\n"
+" Zgłoszenie medium #%(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
msgid "No open reports found."
-msgstr ""
+msgstr "Brak otwartych zgłoszeń."
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
msgid "Closed Reports"
-msgstr ""
+msgstr "Zamknięte zgłoszenia"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
msgid "Resolved"
-msgstr ""
+msgstr "Rozstrzygnięte"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
msgid "Action Taken"
-msgstr ""
+msgstr "Podjęte działanie"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
#, python-format
@@ -1796,27 +1960,28 @@ msgid ""
" Closed Report #%(report_id)s\n"
" "
msgstr ""
+"\n"
+" Zamknięte zgłoszenie #%(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
msgid "No closed reports found."
-msgstr ""
+msgstr "Brak zamkniętych zgłoszeń."
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "Użytkownik: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "Powrót do panelu użytkowników"
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
-msgstr ""
+msgstr "Niestety, nie ma takiego użytkownika."
-#: mediagoblin/templates/mediagoblin/moderation/user.html:53
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53 mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40 mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
msgid "Email verification needed"
msgstr "Wymagana weryfikacja adresu e-mail."
@@ -1826,10 +1991,7 @@ msgid ""
" to be activated."
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user.html:66
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66 mediagoblin/templates/mediagoblin/user_pages/user.html:34 mediagoblin/templates/mediagoblin/user_pages/user.html:46 mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
#, python-format
msgid "%(username)s's profile"
msgstr "Profil użytkownika %(username)s"
@@ -1837,106 +1999,101 @@ msgstr "Profil użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
msgid "BANNED until %(expiration_date)s"
-msgstr ""
+msgstr "ZABLOKOWANE do %(expiration_date)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:72
msgid "Banned Indefinitely"
-msgstr ""
+msgstr "Zablokowane na zawsze"
-#: mediagoblin/templates/mediagoblin/moderation/user.html:78
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78 mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "This user hasn't filled in their profile (yet)."
msgstr "Ten użytkownik nie wypełnił (jeszcze) opisu swojego profilu."
-#: mediagoblin/templates/mediagoblin/moderation/user.html:89
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89 mediagoblin/templates/mediagoblin/user_pages/user.html:57 mediagoblin/templates/mediagoblin/user_pages/user.html:74
msgid "Edit profile"
msgstr "Edytuj profil"
-#: mediagoblin/templates/mediagoblin/moderation/user.html:96
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96 mediagoblin/templates/mediagoblin/user_pages/user.html:81
msgid "Browse collections"
msgstr "PrzeglÄ…daj kolekcje"
#: mediagoblin/templates/mediagoblin/moderation/user.html:105
#, python-format
msgid "Active Reports on %(username)s"
-msgstr ""
+msgstr "Aktywne zgłoszenia dotyczące użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:112
msgid "Report ID"
-msgstr ""
+msgstr "Identyfikator zgłoszenia"
#: mediagoblin/templates/mediagoblin/moderation/user.html:113
msgid "Reported Content"
-msgstr ""
+msgstr "Zgłoszone dane"
#: mediagoblin/templates/mediagoblin/moderation/user.html:114
msgid "Description of Report"
-msgstr ""
+msgstr "Opis zgłoszenia"
#: mediagoblin/templates/mediagoblin/moderation/user.html:122
#, python-format
msgid "Report #%(report_number)s"
-msgstr ""
+msgstr "Zgłoszenie #%(report_number)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "Zgłoszony komentarz"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
-msgstr ""
+msgstr "Zgłoszone media"
#: mediagoblin/templates/mediagoblin/moderation/user.html:142
#, python-format
msgid "No active reports filed on %(username)s"
-msgstr ""
+msgstr "Brak aktywnych zgłoszeń dotyczących użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:150
#, python-format
msgid "All reports on %(username)s"
-msgstr ""
+msgstr "Wszystkie zgłoszenia dotyczące użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:155
#, python-format
msgid "All reports that %(username)s has filed"
-msgstr ""
+msgstr "Wszystkie zgłoszenia wypełnione przez użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "Uprawnienia użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Uprawnienia"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "Przyznane"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Tak"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Nie"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Zablokuj użytkowników"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "Odblokuj użytkownika"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21 mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
msgid "User panel"
-msgstr ""
+msgstr "Panel użytkownika"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
msgid ""
@@ -1944,53 +2101,48 @@ msgid ""
" Here you can look up users in order to take punitive actions on them.\n"
" "
msgstr ""
+"\n"
+" Tu możesz przeglądać konta wymagające reakcji moderatora.\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
+msgstr "Aktywni użytkownicy"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
-msgstr ""
+msgstr "Data założenia konta"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
msgid "# of Comments Posted"
-msgstr ""
+msgstr "Liczba wysłanych komentarzy"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
msgid "No users found."
-msgstr ""
+msgstr "Nie odnaleziono użytkowników."
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
msgstr "Dodaj kolekcjÄ™"
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
+#: mediagoblin/templates/mediagoblin/submit/start.html:28 mediagoblin/templates/mediagoblin/submit/start.html:35
msgid "Add your media"
msgstr "Dodaj swoje media"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "■Wpis użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92 mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Dodaj komentarz"
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103 mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Dodaj komentarz"
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149 mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Dodano"
@@ -2007,17 +2159,17 @@ msgstr "%(collection_title)s użytkownika <a href=\"%(user_url)s\">%(username)s<
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "Usuń kolekcję %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Na pewno usunąć kolekcję: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "Usuń %(media_title)s z %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2043,7 +2195,9 @@ msgstr "kolekcje użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Witaj %(username)s,\n%(comment_author)s skomentował twój wpis (%(comment_url)s) na %(instance_name)s\n"
+msgstr ""
+"Witaj %(username)s,\n"
+"%(comment_author)s skomentował twój wpis (%(comment_url)s) na %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
@@ -2052,27 +2206,26 @@ msgstr "Media użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "pliki użytkownika <a href=\"%(user_url)s\">%(username)s</a> z tagiem <a href=\"%(tag_url)s\">%(tag)s</a>"
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+"Media użytkownika <a href=\"%(user_url)s\">%(username)s</a> z tagiem <a href=\""
+"%(tag_url)s\">%(tag)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "media użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "Media użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "■Przeglądanie mediów użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "PodglÄ…d komentarza"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28 mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
msgid "Add “%(media_title)s†to a collection"
msgstr "Dodaj “%(media_title)s†do kolekcji"
@@ -2086,8 +2239,7 @@ msgid "Add a new collection"
msgstr "Dodaj nowÄ… kolekcjÄ™"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
+msgid "You can track the state of media being processed for your gallery here."
msgstr "Tutaj możesz śledzić stan mediów przesyłanych do twojej galerii."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
@@ -2096,15 +2248,15 @@ msgstr "Ostatnie 10 twoich udanych wysyłek"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
msgid "<h2>File a Report</h2>"
-msgstr ""
+msgstr "<h2>Wypełnij zgłoszenie</h2>"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
msgid "Reporting this Comment"
-msgstr ""
+msgstr "Zgłaszanie tego komentarza"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
msgid "Reporting this Media Entry"
-msgstr ""
+msgstr "Zgłaszanie tego medium"
#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
#, python-format
@@ -2117,7 +2269,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
msgid "File Report "
-msgstr ""
+msgstr "Wypełnij zgłoszenie "
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
@@ -2129,14 +2281,10 @@ msgid "View all of %(username)s's media"
msgstr "Zobacz wszystkie media użytkownika %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
+msgid "This is where your media will appear, but you don't seem to have added anything yet."
msgstr "Tu będą widoczne twoje media, ale na razie niczego tu jeszcze nie ma."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119 mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84 mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
msgstr "Tu nie ma jeszcze żadnych mediów..."
@@ -2145,8 +2293,7 @@ msgid "Almost done! Your account still needs to be activated."
msgstr "Prawie gotowe! Twoje konto oczekuje na aktywacjÄ™."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
+msgid "An email should arrive in a few moments with instructions on how to do so."
msgstr "Za kilka chwil powinieneś otrzymać e-mail z instrukcjami jak to zrobić."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
@@ -2158,16 +2305,12 @@ msgid "Resend verification email"
msgstr "Wyślij ponownie e-mail weryfikujący"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
+msgid "Someone has registered an account with this username, but it still has to be activated."
msgstr "Ktoś zarejestrował konto o tej nazwie, ale nadal oczekuje ono na aktywację."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
+msgid "If you are that person but you've lost your verification email, you can <a href=\"%(login_url)s\">log in</a> and resend it."
msgstr "Jeśli jesteś tą osobą, ale zgubiłeś swój e-mail weryfikujący, to możesz się <a href=\"%(login_url)s\">zalogować</a> i wysłać go ponownie."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
@@ -2182,13 +2325,19 @@ msgstr "Znajduje siÄ™ w kolekcji "
msgid "Add to a collection"
msgstr "Dodaj do kolekcji"
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Subskrybuj komentarze"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Wycisz komentarze"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21 mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
msgstr "ikona kanału"
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23 mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Kanał Atom"
@@ -2198,70 +2347,66 @@ msgstr "Wszystkie prawa zastrzeżone"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "↠Newer"
-msgstr "↠Nowsze"
+msgstr "↠nowsze"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr "Starsze →"
+msgstr "starsze →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
-msgstr "Idź do strony:"
+msgstr "Przejdź do strony:"
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28 mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
msgstr "nowsze"
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39 mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
msgstr "starsze"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Położenie"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
-msgstr ""
+msgstr "Zgłoś naruszenie"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
msgstr "Znaczniki:"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Nie udało się odczytać pliku grafiki."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Ups!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Wystąpił błąd"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Niewłaściwe żądanie"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "Żądanie wysłane do serwera jest nieprawidłowe, sprawdź je proszę ponownie"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Operacja niedozwolona"
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "Misiaczku, nie możesz tego uczynić!</p><p>Próbowałeś wykonać działanie, do którego nie masz uprawnień. Czy naprawdę chciałeś skasować znowu wszystkie konta?"
+#: mediagoblin/tools/response.py:66
+msgid "Sorry Dave, I can't let you do that!</p><p>You have tried to perform a function that you are not allowed to. Have you been trying to delete all user accounts again?"
+msgstr "Przykro mi, Dave, nie pozwolę ci tego zrobić!</p><p>Próbowałeś wykonać działanie, do którego nie masz uprawnień. Czy naprawdę chciałeś znowu skasować wszystkie konta?"
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
+#: mediagoblin/tools/response.py:74
+msgid "There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure the address is correct, maybe the page you're looking for has been moved or deleted."
msgstr "Wygląda na to, że nic tutaj nie ma!</p><p>Jeśli jesteś pewny, że adres jest prawidłowy, być może strona została skasowana lub przeniesiona."
#: mediagoblin/tools/timesince.py:62
@@ -2293,9 +2438,7 @@ msgid "Comment"
msgstr "Komentarz"
#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
+msgid "You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> for formatting."
msgstr "Możesz formatować tekst za pomocą składni <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\"> Markdown</a>."
#: mediagoblin/user_pages/forms.py:35
@@ -2319,75 +2462,74 @@ msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
" Markdown</a> for formatting."
-msgstr "Możesz formatować tekst za pomocą składni\n<a ref=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\nMarkdown</a>."
+msgstr ""
+"Możesz formatować tekst za pomocą składni\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a>."
#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
msgid "Reason for Reporting"
-msgstr ""
+msgstr "Powód zgłoszenia"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Komentowanie jest wyłączone."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Ups, twój komentarz nie zawierał treści."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Twój komentarz został opublikowany!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Sprawdź swoje wpisy i spróbuj ponownie."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Musisz wybrać lub dodać kolekcję"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" już obecne w kolekcji \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" dodano do kolekcji \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Media zostały usunięte."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Za chwilę usuniesz media innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Element został usunięty z kolekcji."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Ten element nie został usunięty, ponieważ nie zaznaczono, że jesteś pewien."
-#: mediagoblin/user_pages/views.py:421
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
+#: mediagoblin/user_pages/views.py:424
+msgid "You are about to delete an item from another user's collection. Proceed with caution."
msgstr "Zamierzasz usunąć element z kolekcji innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Usunięto kolekcję \"%s\""
-#: mediagoblin/user_pages/views.py:460
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
+#: mediagoblin/user_pages/views.py:463
+msgid "The collection was not deleted because you didn't check that you were sure."
msgstr "Ta kolekcja nie została usunięta, ponieważ nie zaznaczono, że jesteś pewien."
-#: mediagoblin/user_pages/views.py:468
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
msgstr "Zamierzasz usunąć kolekcję innego użytkownika. Zachowaj ostrożność."
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index b32ddcb5..00000000
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 31f9abff..00000000
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1852 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# Farid Abdelnour <snd.noise@gmail.com>, 2013
-# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013-2014
-# Farid Abdelnour <snd.noise@gmail.com>, 2011
-# ufa <ufa@technotroll.org>, 2011
-# Vinicius, 2013
-# Vinicius, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-01-07 09:26+0000\n"
-"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/mediagoblin/language/pt_BR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Desculpa, o registro está desativado neste momento."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "Desculpe, criação de relatório está desabilitado nessa instância."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Desculpe, autenticação está desabilitada nessa instância."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Nome de usuário ou email inválidos."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Este campo não aceita endereços de email."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Este campo requer um endereço de email."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Desculpe, um usuário com este nome já existe."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Desculpe, um usuário com esse endereço de email já está cadastrado."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "A chave de verificação ou ID de usuário estão incorretos."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "O seu endereço de email foi verificado. Você pode agora fazer login, editar seu perfil, e enviar imagens!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "A chave de verificação ou ID de usuário estão incorretos."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Você precisa entrar primeiro para sabermos para quem mandar o email!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Você já verificou seu email!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "O email de verificação foi enviado novamente."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Título"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Descrição desse trabalho"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Separe as etiquetas com vírgulas."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Arquivo"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "O arquivo não pode estar vazio"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "A parte do título do endereço dessa mídia. Geralmente você não precisa mudar isso."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licença"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Biografia"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Website"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Este endereço contém erros"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "Me enviar um email quando outras pessoas comentarem minhas mídias"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Habilitar notificações instantâneas sobre eventos."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Licença preferida"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Esta será sua licença padrão nos formulários de envio."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "O título não pode ficar vazio"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Descrição desta coleção"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "A parte do título do endereço dessa coleção. Geralmente você não precisa mudar isso."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Senha antiga"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Digite sua senha antiga para provar que esta conta é sua."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Nova senha"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Novo endereço de email"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Senha"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Digite sua senha para provar que esta conta é sua."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "Uma entrada com esse arquivo já existe para esse usuário."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Você está editando a mídia de outro usuário. Tenha cuidado."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Você adicionou o anexo %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Você só pode editar o seu próprio perfil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Você está editando um perfil do usuário. Tenha cuidado."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "As mudanças no perfil foram salvas"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "As mudanças na conta foram salvas"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Você precisa confirmar a exclusão da sua conta."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Você já tem uma coleção chamada \"%s\"!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "Já existe uma coleção com este arquivo para este usuário."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Você está editando a coleção de um outro usuário. Prossiga com cuidado."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Seu endereço de email foi verificado."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Senha errada"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Não é possível fazer link de tema... nenhum tema definido\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "Nenhum diretório ativo para esse tema\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Porém, link simbólico antigo de diretório foi encontrado; removido.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "Não foi possível vincular \"%s\": %s existe e não é um link simbólico\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Pulando \"%s\"; já configurado.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Link antigo encontrado para \"%s\"; removendo.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "Cookie CSFR não está presente. Isso é provavelmente o resultado de um bloqueador de cookies ou algo do tipo.<br/>Tenha certeza de autorizar este domínio a configurar cookies."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Desculpe, não tenho suporte a este tipo de arquivo :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "unoconv falhando na execução, verifique o arquivo de log"
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Conversão do vídeo falhou"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Retirar privilégio"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Banir o usuário"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Enviar uma mensagem ao usuário"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Excluir o conteúdo"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "O usuário será banido até:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "Por que você está banindo esse usuário?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Qual ação você tomará para resolver o relatório?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Que privilégios você vai retirar?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Aviso de"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "comentou na sua publicação"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Você se inscreveu nos comentários de %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Você não irá receber notificações de comentários em %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Deve fornecer um oauth_token."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "Nenhum token de requisição encontrado."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr "Desculpe, o tamanho arquivo é grande demais."
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Desculpe, o envio desse arquivo vai deixar você acima do seu limita de envio."
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr "Desculpe, você atingiu seu limite de envios."
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Nome de Usuário"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Endereço de email"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Nome de usuário ou email"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Mantenha-me conectado"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Nome de usuário ou email"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Se esse endereço de email (sensível a maiúsculo/minúsculo!) estiver registrado, um email será enviado com instruções para alterar sua senha."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Não foi possível encontrar alguém com esse nome de usuário."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Um email foi enviado com instruções para trocar sua senha."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Não foi possível enviar o email de recuperação de senha, pois seu nome de usuário está inativo ou endereço de email da sua conta não foi confirmado."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "O ID de usuário está incorreto."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Agora você pode entrar usando sua nova senha."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr "Você não é mais um usuário ativo. Por favor, contate o administrador do sistema para reativar sua conta."
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Sua senha foi alterada com sucesso"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Defina a sua nova senha"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Definir senha"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Alterando a senha de %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Salvar"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Ainda não tem conta?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Crie uma aqui!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr "Alterar sua senha"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Recuperar senha"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Enviar instruções"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Esqueceu sua senha?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Localização"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Ver no <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "Registre-se para criar uma conta!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Permitir"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Negar"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Nome"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "O nome do cliente OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Descrição"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Isso estará visível a outros usuários\npermitindo seu aplicativo autenticá-lo."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Tipo"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Confidencial</strong> - O cliente pode\nfazer requisições para a instância do GNU MediaGoblin\nque não podem ser interceptadas pelo \"user agent\"\n(ex.: cliente do lado do servidor).<br />\n<strong>Público</strong> - O cliente não pode fazer\nrequisições confidenciais para a instância do\nGNU MediaGoblin (ex.: cliente JavaScript do lado do\nservidor)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "URI de Redirecionamento"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "A URI de redirecionamento para os aplicativos,\nesse campo é <strong>necessário</strong> para clientes públicos."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Este campo é necessário para clientes públicos"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "O cliente {0} foi registrado!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Conexões de cliente OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Seus clientes OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Adicionar"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "Desculpe, já existe uma conta associada a esse OpenID."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "Desculpe, o servidor OpenID não pôde ser encontrado"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "Nenhum serviço OpenID encontrado para %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Verificação de %s falhou: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Verificação cancelada"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "O endereço do seu OpenID foi salvo com sucesso."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Você não pode excluir sua única URL do OpenID, a menos que você tenha uma senha definida"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "Esse OpenID não está associado a esta conta."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "OpenID removido com sucesso."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Adicionar um OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Deletar um OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Excluir"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Entrar"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Autenticação falhou!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "Entre para criar uma conta!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Ou entre com uma senha!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "Ou entre com OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "Ou registre com OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "Desculpe, uma conta já está registada a esse email Persona."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "O endereço de email Persona foi removido com sucesso."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "Você não pode excluir seu único email Persona, a menos que tenha uma senha definida."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Esse endereço de email Persona não está associado a esta conta."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Desculpe, já existe uma conta associada a este endereço de email Persona."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "Seu endereço de email Persona foi salvo com sucesso."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Excluir um endereço de email Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Adicionar um endereço de email Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr "Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "Ou entre com Persona!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "Ou registre com Persona!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Arquivo inválido para esse tipo de mídia."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Falha ao copiar para armazenamento público."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "Um arquivo de processamento aceitável não foi encontrado"
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "Tamanho máximo de arquivo: {0} MB"
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Arquivo"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Você deve fornecer um arquivo."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Eba! Enviado!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "Coleção \"%s\" adicionada!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Você está banido."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Imagem do goblin se estressando"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Você foi banido"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "até %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "indefinidamente"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Verifique seu email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "sair"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "Conta de <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Mudar configurações da conta"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Painel de processamento de mídia"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Sair"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Adicionar mídia"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Criar nova coleção"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr "Painel de gerenciamento de usuário"
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr "Painel de gerenciamento de relatório"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Mídias mais recentes"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorização"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autorizar"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Você está conectado como"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Você quer autorizar"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "um aplicativo desconhecido"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "para acessar sua conta?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Aplicativos com acesso à sua conta podem:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Publicar nova mídia como você"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "Veja suas informações (ex.: perfil, mídia, etc.)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Alterar suas informações"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Autorização Finalizada"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Autorização Concluída"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Copie e cole isto no seu cliente:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Criar uma conta!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Criar"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Olá %(username)s,\n\nPara ativar sua conta GNU MediaGoblin, visite este endereço no seu navegador:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Fornecido pelo <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, um projeto <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Lançado sob a <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Código fonte</a> disponível."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "Termos de Serviço"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Explorar"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Olá, bem-vindo a este site MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Este site roda o <a href=\"http://mediagoblin.org\">MediaGoblin</a>, um programa excelente para hospedar, gerenciar e compartilhar mídia."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Para adicionar sua própria mídia, publicar comentários e mais outras coisas, você pode entrar com sua conta MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr " Ainda não tem uma conta? É facil!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n>Crie uma conta neste site</a>\nou"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n<a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Configure MediaGoblin em seu próprio servidor</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Logo do MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Editando os anexos de %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Anexos"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Adicionar anexo"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Salvar mudanças"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Alterando email de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Realmente excluir o usuário '%(user_name)s' e todas as mídias e comentários associados?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Sim, realmente excluir minha conta"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Excluir permanentemente"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Editando %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Alterando as configurações da conta de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Excluir minha conta"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Email"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Editando %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Editando perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Olá,\n\nNós queríamos verificar que você é %(username)s. Se for esse o caso, então por favor clique no link abaixo para verificar seu novo endereço de email.\n\n%(verification_url)s\n\nSe você não for %(username)s ou se não fez um pedido de alteração do endereço de email, você pode ignorar\nesta mensagem."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Novos comentários"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Marcar tudo como lido"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Etiquetas desta mídia: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Baixar"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Desculpe, este áudio não será reproduzido porque \n »seu navegador não oferece suporte a áudio \n »HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Você pode obter um navegador moderno\n »capaz de reproduzir o áudio em <a href=\"http://getfirefox.com\">\n » http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Arquivo original"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "Arquivo WebM (codec Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Criado"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imagem para %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "Arquivo PDF"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspectiva"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Frente"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Cima"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Lado"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Baixar o modelo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Formato de Arquivo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Altura do Objeto"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Desculpe, este vídeo não irá reproduzir porque\n seu navegador não oferece suporte a vídeo\n HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Você pode obter um navegador moderno\n capaz de reproduzir este vídeo em <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "Arquivo WebM (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Aqui você pode rastrear o estado da mídia sendo processada nessa instância."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Mídia em processamento"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Nenhuma mídia em processamento"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Esses envios não foram processados:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Nenhuma entrada falhou!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Últimos 10 envios bem sucedidos"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Ainda não há entradas processadas!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr "Desculpe, relatório inexistente."
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr "Retornar para o painel de relatórios"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr "Relatar"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr "Comentário relatado"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr "\n ■Mídia relatada por <a href=\"%(user_url)s\">%(user_name)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr "\n CONTEÚDO DE\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n FOI EXCLUÃDO\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr "Resolver"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr "Resolver esse relatório"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr "Status"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr "RESOLVIDO"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr "Você não pode aplicar uma ação contra um administrador"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr "Painel de relatórios"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr "\n Aqui você pode procurar por relatórios abertos que foram preenchidos por usuários.\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr "Relatórios ativos"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr "Ofensor"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Relatado quando"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr "Relatador por"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Motivo"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr "\n Relatório de Comentário #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr "\n Relatório de Mídia #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr "Nenhum relatório aberto encontrado."
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr "Relatórios fechados"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr "Resolvido"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr "Ação tomada"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr "\n Relatórios Fechados #%(report_id)s\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "Nenhum relatório fechado encontrado."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr "Painel de usuário"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr "\n Aqui você pode procurar usuários para aplicar ações punitivas neles.\n "
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr "Usuários Ativos"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr "Quando entrou"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr "# de comentários publicados"
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr "Nenhum usuário encontrado."
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Adicionar uma coleção"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Adicionar sua mídia"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (Coleção de %(username)s)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Editar"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Realmente excluir %(title)s ?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Realmente remover %(media_title)s de %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Remover"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Coleções de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Coleções de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Olá %(username)s,\n %(comment_author)s comentou na sua publicação (%(comment_url)s) em %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Mídia de %(username)s's"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Mídias de <a href=\"%(user_url)s\">%(username)s</a> com a etiqueta <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Mídia de <a href=\"%(user_url)s\"> %(username)s </a> "
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■Vendo mídia de <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Adicionar um comentário"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Adicionar este comentário"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Pré-visualização do comentário"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Adicionado há"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Adicionar \"%(media_title)s\" a uma coleção"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Adicionar uma nova coleção"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Você pode verificar como a mídia esta sendo processada para sua galeria aqui."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Seus últimos 10 envios bem sucedidos"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr "<h2>Preencha um Relatório</h2>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr "Relatando esse comentário"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr "Relatando esse registro de mídia"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\nâ– Publicado por <a href=\"%(user_url)s\"\nclass=\"comment_authorlink\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr "Enviar relatório"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Perfil de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Aqui é o lugar onde você fala de si para os outros."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Editar perfil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Esse usuário não preencheu seu perfil (ainda)."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Ver coleções"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Ver todas as mídias de %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Aqui é onde sua mídia vai aparecer, mas parece que você não adicionou nada ainda."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Parece que ainda não há nenhuma mídia por aqui..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Verificação de email necessária"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Quase pronto! Sua conta ainda precisa ser ativada."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Um email deve chegar em instantes com instruções de como fazê-lo."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "Caso contrário:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Reenviar email de verificação"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Alguém registrou uma conta com esse nome de usuário, mas ainda precisa ser ativada."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Se você é essa pessoa, mas você perdeu seu e-mail de verificação, você pode <a href=\"%(login_url)s\">efetuar login</a> e reenviá-la."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(remover)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Colecionado em"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Adicionar a uma coleção"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "ícone feed"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Atom feed"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Todos os direitos reservados"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Novas"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Antigas →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Ir a página:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "mais recente"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "mais antiga"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr "Relatar mídia"
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Etiquetas"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Não foi possível ler o arquivo de imagem."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Ops!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Um erro ocorreu"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Requisição inválida"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "A requisição enviada para o servidor é inválida, por favor verifique novamente"
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Operação não permitida"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "Me desculpe Dave, não posso deixar você fazer isso!</p><p>Você tentou executar uma função sem autorização. Por acaso estava novamente tentando excluir todas as contas de usuários?"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Parece que não há uma página com este endereço. Desculpe!</p><p>Se você tem certeza que este endereço está correto, talvez a página que esteja procurando tenha sido movida ou excluída."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "ano"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "mês"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "semana"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "dia"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hora"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minuto"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Comentário"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Você pode usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> para formatação."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Eu tenho certeza de que quero excluir isso"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Tenho certeza que quero remover este item da coleção"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Coleção"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Selecionar --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Incluir uma nota"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação de texto."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr "Motivo para o relatório"
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Desculpe, os comentários estão desabilitados."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Ops, seu comentário estava vazio."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Seu comentário foi publicado!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Por favor, verifique suas entradas e tente novamente."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Você deve selecionar ou adicionar uma coleção"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" já está na coleção \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" adicionado à coleção \"%s\""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Você excluiu a mídia."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "A mídia não foi excluída porque você não marcou que tinha certeza."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Você vai excluir uma mídia de outro usuário. Tenha cuidado."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Você excluiu o item da coleção."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "O item não foi removido porque você não marcou que tinha certeza."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Você está prestes a excluir um item da coleção de um outro usuário. Tenha cuidado."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Você excluiu a coleção \"%s\""
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "A coleção não foi excluída porque você não marcou que tinha certeza."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Você está prestes a excluir a coleção de um outro usuário. Tenha cuidado."
diff --git a/mediagoblin/i18n/pt_BR/mediagoblin.po b/mediagoblin/i18n/pt_BR/mediagoblin.po
new file mode 100644
index 00000000..c2149c59
--- /dev/null
+++ b/mediagoblin/i18n/pt_BR/mediagoblin.po
@@ -0,0 +1,2666 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Farid Abdelnour <snd.noise@gmail.com>, 2013
+# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013-2014
+# Farid Abdelnour <snd.noise@gmail.com>, 2011
+# ufa <ufa@technotroll.org>, 2011
+# Vinicius, 2013
+# Vinicius, 2013-2014
+# danielneis <danielneis@gmail.com>, 2015.
+# larjona <larjona@larjona.net>, 2015.
+# farid <noise@riseup.net>, 2015.
+# ayleph <ayleph@thisshitistemp.com>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-12-16 18:26+0000\n"
+"Last-Translator: ayleph <ayleph@thisshitistemp.com>\n"
+"Language-Team: Portuguese (Brazil) "
+"(http://www.transifex.com/projects/p/mediagoblin/language/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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1450290419.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Desculpa, o registro está desativado neste momento."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Desculpe, criação de relatório está desabilitado nessa instância."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Desculpe, autenticação está desabilitada nessa instância."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Nome de usuário ou email inválidos."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Este campo não aceita endereços de email."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Este campo requer um endereço de email."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Desculpe, um usuário com este nome já existe."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Desculpe, um usuário com esse endereço de email já está cadastrado."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "A chave de verificação ou ID de usuário estão incorretos."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "O seu endereço de email foi verificado. Você pode agora fazer login, editar seu perfil, e enviar imagens!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "A chave de verificação ou ID de usuário estão incorretos."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Você precisa entrar primeiro para sabermos para quem mandar o email!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Você já verificou seu email!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "O email de verificação foi enviado novamente."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} adicionou {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} adicionou {object} em {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} autorou {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} criou {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} excluíu {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} não gostou de {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} favoritou {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} seguiu {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} gostou de {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} postou {object}"
+
+# Fixing typo in variable name
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} postou {object} em {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} compartilhou {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} removeu {object} dos favoritos"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} parou de seguir {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} deixou de gostar de {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} cancelou o compartilhamento de {object}"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} atualizou {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} adicinou uma etiqueta em {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "um imagem"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "um comentário"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "uma coleção"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "um vídeo"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "uma pessoa"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "um objeto"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Título"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Descrição desse trabalho"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Separe as etiquetas com vírgulas."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Arquivo"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "O arquivo não pode estar vazio"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "A parte do título do endereço dessa mídia. Geralmente você não precisa mudar isso."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licença"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Biografia"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Website"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Este endereço contém erros"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Cidade natal"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "Me enviar um email quando outras pessoas comentarem minhas mídias"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Habilitar notificações instantâneas sobre eventos."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Licença preferida"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Esta será sua licença padrão nos formulários de envio."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "O título não pode ficar vazio"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Descrição desta coleção"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "A parte do título do endereço dessa coleção. Geralmente você não precisa mudar isso."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Senha antiga"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Digite sua senha antiga para provar que esta conta é sua."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nova senha"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Novo endereço de email"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Senha"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Digite sua senha para provar que esta conta é sua."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Identificador"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Valor"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Uma entrada com esse arquivo já existe para esse usuário."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Você está editando a mídia de outro usuário. Tenha cuidado."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Você adicionou o anexo %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Você só pode editar o seu próprio perfil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Você está editando um perfil do usuário. Tenha cuidado."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "As mudanças no perfil foram salvas"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "As mudanças na conta foram salvas"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Aplicação de sconhecida, não foi possível desautorizar"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Aplicação foi desautorizada"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Você precisa confirmar a exclusão da sua conta."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Você já tem uma coleção chamada \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "Já existe uma coleção com este arquivo para este usuário."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Você está editando a coleção de um outro usuário. Prossiga com cuidado."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Seu endereço de email foi verificado."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Senha errada"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Não é possível fazer link de tema... nenhum tema definido\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Nenhum diretório ativo para esse tema\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Porém, link simbólico antigo de diretório foi encontrado; removido.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Não foi possível vincular \"%s\": %s existe e não é um link simbólico\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Pulando \"%s\"; já configurado.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Link antigo encontrado para \"%s\"; removendo.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr "Para mais informação sobre como executar esse script\nde forma adequada (e como formatar o arquivo csv de\nmetadados), leia a página de documentação sobre envio\npela linha de comando\n<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Nome do usuário a quem essas mídias pertence"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Caminho do arquivo csv contendo informação de metadados."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr "Não processar avidamente, passar para celeridade"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Desculpe, não há usuário com nome de usuário '{username}'"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Arquivo em {path} não encontrado, use a opção -h para ajuda"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr "Erro com a mídia '{media_id}' valor '{error_path}': {error_msg}\nMetadados não foram enviados."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr "FALHA: Arquivo local {filename} não pôde ser acessado.\n{filename} não será enviado."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr "Enviado com sucesso o {filename}!\nCertifique-se de olhar no Painel de Processamento de Mídia no seu site para\nter certeza que ele foi enviado com sucesso."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "FALHA: Esse arquivo é maior do que os limites de envio para este site."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr "FALHA: Esse arquivo vai deixar este usuário acima do seu limite de envio."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "FALHA: Este usuário já está além do seu limite de envio."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} de {files_attempted} arquivos enviados com sucesso"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "Cookie CSFR não está presente. Isso é provavelmente o resultado de um bloqueador de cookies ou algo do tipo.<br/>Tenha certeza de autorizar este domínio a configurar cookies."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Desculpe, não tenho suporte a este tipo de arquivo :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Descrição"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Eu tenho certeza de que quero excluir isso"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Eba! Enviado!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Uhull! O Blogspot editado foi enviado"
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Você excluiu o Blog."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "A mídia não foi excluída porque você não marcou que tinha certeza."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Você irá excluir o Blog de outro usuário. Tenha cuidado."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "O blog não foi excluído porque você não tem permissões."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Adicionar post de blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Editar Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Excluir Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Editar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Excluir"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Ir para a visão de lista </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr "Nenhum post de blog ainda."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Realmente excluir %(title)s ?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Excluir permanentemente"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Criar/Editar um Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Adicionar"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Criar/Editar um post de blog."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Criar/Editar um Post de Blog."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Blog do %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr "Visão"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Criar um Blog"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr "Painel de Blog"
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "unoconv falhando na execução, verifique o arquivo de log"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Conversão do vídeo falhou"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Retirar privilégio"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Banir o usuário"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Enviar uma mensagem ao usuário"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Excluir o conteúdo"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "O usuário será banido até:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "Por que você está banindo esse usuário?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Qual ação você tomará para resolver o relatório?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Que privilégios você vai retirar?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Por que o usuário foi banido:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Mensagem para o usuário:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Conteúdo da resolução:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} removeu os privilégios {privilege} de {user}"
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} baniu o usuário {user} {expiration_date}"
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "até {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "indefinidamente"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} enviou um email de alerta para o usuário {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} excluíu o comentário."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} excluíu a entrada de mídia."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Aviso de"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "comentou na sua publicação"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Você se inscreveu nos comentários de %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Você não irá receber notificações de comentários em %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Deve fornecer um oauth_token."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "Nenhum token de requisição encontrado."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Desculpe, o tamanho arquivo é grande demais."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr "Desculpe, o envio desse arquivo vai deixar você acima do seu limita de envio."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Desculpe, você atingiu seu limite de envios."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Insira a URL para a mídia ser fornecida"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "primário"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "Secundário"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "Terciário"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------Recursos-{display_type}---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Como isso funciona?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Como destacar as mídias?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "Existe algum outro modo de gerencias as mídias destacadas?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "O que é um destaque primário? O que é um destaque secundário?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+"Como decidir qual informação é apresentada quando uma entrada de mídia é "
+"destacada?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Como tirar o destaque de uma peça de mídia?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "CUIDADO:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+"\n"
+"Mídia em destaque"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Destaque"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+"\n"
+"Tirar destaque da mídia"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Tirar destaque"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+"\n"
+"Promover destaque"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr "Promover"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+"\n"
+"Rebaixar destaque"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr "Rebaixar"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Mídias mais recentes"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "Nada em destaque no momento."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "Ver mídias mais recentes"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Painel de gerenciamento de destaques"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+"Desculpas, mas este áudio não funciona porque\n"
+"\tseu navegador não tem suporte áudio em\n"
+" \tHTML5"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Nome de Usuário"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Endereço de email"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Nome de usuário ou email"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Mantenha-me conectado"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Nome de usuário ou email"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Se esse endereço de email (sensível a maiúsculo/minúsculo!) estiver registrado, um email será enviado com instruções para alterar sua senha."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Não foi possível encontrar alguém com esse nome de usuário."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Um email foi enviado com instruções para trocar sua senha."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "Não foi possível enviar o email de recuperação de senha, pois seu nome de usuário está inativo ou endereço de email da sua conta não foi confirmado."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "O ID de usuário está incorreto."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Agora você pode entrar usando sua nova senha."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr "Você não é mais um usuário ativo. Por favor, contate o administrador do sistema para reativar sua conta."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Sua senha foi alterada com sucesso"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Defina a sua nova senha"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Definir senha"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Alterando a senha de %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Salvar"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "Ainda não tem conta?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Crie uma aqui!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr "Alterar sua senha"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Recuperar senha"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Enviar instruções"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Esqueceu sua senha?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Ver no <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "Registre-se para criar uma conta!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Metadados"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Editar Metadados"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permitir"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Negar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nome"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "O nome do cliente OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Isso estará visível a outros usuários\npermitindo seu aplicativo autenticá-lo."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Tipo"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Confidencial</strong> - O cliente pode\nfazer requisições para a instância do GNU MediaGoblin\nque não podem ser interceptadas pelo \"user agent\"\n(ex.: cliente do lado do servidor).<br />\n<strong>Público</strong> - O cliente não pode fazer\nrequisições confidenciais para a instância do\nGNU MediaGoblin (ex.: cliente JavaScript do lado do\nservidor)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "URI de Redirecionamento"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "A URI de redirecionamento para os aplicativos,\nesse campo é <strong>necessário</strong> para clientes públicos."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Este campo é necessário para clientes públicos"
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "O cliente {0} foi registrado!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Conexões de cliente OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Seus clientes OAuth"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Desculpe, já existe uma conta associada a esse OpenID."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Desculpe, o servidor OpenID não pôde ser encontrado"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "Nenhum serviço OpenID encontrado para %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Verificação de %s falhou: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Verificação cancelada"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "O endereço do seu OpenID foi salvo com sucesso."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "Você não pode excluir sua única URL do OpenID, a menos que você tenha uma senha definida"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Esse OpenID não está associado a esta conta."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "OpenID removido com sucesso."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Adicionar um OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Deletar um OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Entrar"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Autenticação falhou!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "Entre para criar uma conta!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Ou entre com uma senha!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "Ou entre com OpenID!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "Ou registre com OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Desculpe, uma conta já está registada a esse email Persona."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "O endereço de email Persona foi removido com sucesso."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "Você não pode excluir seu único email Persona, a menos que tenha uma senha definida."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Esse endereço de email Persona não está associado a esta conta."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Desculpe, já existe uma conta associada a este endereço de email Persona."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "Seu endereço de email Persona foi salvo com sucesso."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Excluir um endereço de email Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Adicionar um endereço de email Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr "Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "Ou entre com Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "Ou registre com Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Arquivo inválido para esse tipo de mídia."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Falha ao copiar para armazenamento público."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "Um arquivo de processamento aceitável não foi encontrado"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "Tamanho máximo de arquivo: {0} MB"
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Arquivo"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Você deve fornecer um arquivo."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Coleção \"%s\" adicionada!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Você está banido."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imagem do goblin se estressando"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Você foi banido"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "até %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Verifique seu email!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "sair"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "Conta de <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Mudar configurações da conta"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Painel de processamento de mídia"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Sair"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Adicionar mídia"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Criar nova coleção"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Painel de gerenciamento de usuário"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Painel de gerenciamento de relatório"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorização"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autorizar"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Você está conectado como"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Você quer autorizar"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "um aplicativo desconhecido"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "para acessar sua conta?"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Aplicativos com acesso à sua conta podem:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Publicar nova mídia como você"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "Veja suas informações (ex.: perfil, mídia, etc.)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Alterar suas informações"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorização Finalizada"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorização Concluída"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Copie e cole este <strong>código de verificação</strong> no seu cliente:"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Criar uma conta!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Criar"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Olá %(username)s,\n\nPara ativar sua conta GNU MediaGoblin, visite este endereço no seu navegador:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Fornecido pelo <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, um projeto <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Lançado sob a <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Código fonte</a> disponível."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "Termos de Serviço"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Explorar"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Olá, bem-vindo a este site MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Este site roda o <a href=\"http://mediagoblin.org\">MediaGoblin</a>, um programa excelente para hospedar, gerenciar e compartilhar mídia."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Para adicionar sua própria mídia, publicar comentários e mais outras coisas, você pode entrar com sua conta MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr " Ainda não tem uma conta? É facil!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr "\n>Crie uma conta neste site</a>\nou"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logo do MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Editando os anexos de %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Anexos"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Adicionar anexo"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Salvar mudanças"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Alterando email de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Desautorizar aplicações"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Desautorizar aplicações"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Não existem aplicações autorizadas."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Tipo:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Autorizado:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Realmente excluir o usuário '%(user_name)s' e todas as mídias e comentários associados?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Sim, realmente excluir minha conta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Editando %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "Alterando as configurações da conta de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Excluir minha conta"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Email"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Editando %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Editando perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Metadados de \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "MetaDados"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Adicionar nova linha"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Atualizar metadados"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "Limpar linhas vazias"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Olá,\n\nNós queríamos verificar que você é %(username)s. Se for esse o caso, então por favor clique no link abaixo para verificar seu novo endereço de email.\n\n%(verification_url)s\n\nSe você não for %(username)s ou se não fez um pedido de alteração do endereço de email, você pode ignorar\nesta mensagem."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Novos comentários"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Marcar tudo como lido"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Etiquetas desta mídia: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Baixar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Arquivo original"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "Arquivo WebM (codec Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Criado"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imagem para %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "Arquivo PDF"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Frente"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Cima"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Lado"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Baixar o modelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formato de Arquivo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Altura do Objeto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Desculpe, este vídeo não irá reproduzir porque\n seu navegador não oferece suporte a vídeo\n HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "Você pode obter um navegador moderno\n capaz de reproduzir este vídeo em <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "Arquivo WebM (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Aqui você pode rastrear o estado da mídia sendo processada nessa instância."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Mídia em processamento"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Usuário"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Quando submetido"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Progresso da transcodificação"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Nenhuma mídia em processamento"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Esses envios não foram processados:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Motivo da falha"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Metadados da falha"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Nenhuma entrada falhou!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Últimos 10 envios bem sucedidos"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "Enviado"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Ainda não há entradas processadas!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr "Desculpe, relatório inexistente."
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr "Retornar para o painel de relatórios"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Relatar"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Comentário relatado"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr "\n ■Mídia relatada por <a href=\"%(user_url)s\">%(user_name)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr "\n CONTEÚDO DE\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n FOI EXCLUÃDO\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Motivo para relatar:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Resolver"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Resolver esse relatório"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "Status"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "RESOLVIDO"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "Você não pode aplicar uma ação contra um administrador"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Painel de relatórios"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr "\n Aqui você pode procurar por relatórios abertos que foram preenchidos por usuários.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr "Relatórios ativos"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Ofensor"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Relatado quando"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr "Relatador por"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Motivo"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr "\n Relatório de Comentário #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr "\n Relatório de Mídia #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr "Nenhum relatório aberto encontrado."
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr "Relatórios fechados"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr "Resolvido"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr "Ação tomada"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr "\n Relatórios Fechados #%(report_id)s\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Nenhum relatório fechado encontrado."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Usuário: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "Voltar para o painel de usuários"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Desculpe, o usuário não foi encontrado."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Verificação de email necessária"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr "Alguém já registrou uma conta com este nome de usuário, mas ela ainda precisa\nser ativada."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "BANIDO até %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "Banido indefinidamente"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Esse usuário não preencheu seu perfil (ainda)."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Ver coleções"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr "Relatos ativos para %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr "ID do relato"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr "Conteúdo relatado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "Descrição do relato"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Relato #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Comentário relatado"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Entrada de mídia relatada"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr "Nenhum relato ativo para %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr "Todos os relatos para %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr "Todos os relatos que %(username)s preencheu"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "Privilégios de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "Privilégio"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Concedido"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Sim"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Não"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Banir usuário"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Retirar banimento de usuário"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Painel de usuário"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr "\n Aqui você pode procurar usuários para aplicar ações punitivas neles.\n "
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Usuários Ativos"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Quando entrou"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "# de comentários publicados"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "Nenhum usuário encontrado."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Adicionar uma coleção"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Adicionar sua mídia"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "â– Blog post por <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Adicionar um comentário"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Adicionar este comentário"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Adicionado há"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (Coleção de %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "Realmente excluir coleção: %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Remover %(media_title)s de %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Realmente remover %(media_title)s de %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Remover"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Coleções de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Coleções de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Olá %(username)s,\n %(comment_author)s comentou na sua publicação (%(comment_url)s) em %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Mídia de %(username)s's"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "Mídias de <a href=\"%(user_url)s\">%(username)s</a> com a etiqueta <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Mídia de <a href=\"%(user_url)s\"> %(username)s </a> "
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Vendo mídia de <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Pré-visualização do comentário"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Adicionar \"%(media_title)s\" a uma coleção"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Adicionar uma nova coleção"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Você pode verificar como a mídia esta sendo processada para sua galeria aqui."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Seus últimos 10 envios bem sucedidos"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Preencha um Relatório</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "Relatando esse comentário"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "Relatando esse registro de mídia"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\nâ– Publicado por <a href=\"%(user_url)s\"\nclass=\"comment_authorlink\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr "Enviar relatório"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Aqui é o lugar onde você fala de si para os outros."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Ver todas as mídias de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Aqui é onde sua mídia vai aparecer, mas parece que você não adicionou nada ainda."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Parece que ainda não há nenhuma mídia por aqui..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Quase pronto! Sua conta ainda precisa ser ativada."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Um email deve chegar em instantes com instruções de como fazê-lo."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "Caso contrário:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Reenviar email de verificação"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Alguém registrou uma conta com esse nome de usuário, mas ainda precisa ser ativada."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Se você é essa pessoa, mas você perdeu seu e-mail de verificação, você pode <a href=\"%(login_url)s\">efetuar login</a> e reenviá-la."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(remover)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Colecionado em"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Adicionar a uma coleção"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "ícone feed"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom feed"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Todos os direitos reservados"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Novas"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Antigas →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Ir a página:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "mais recente"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "mais antiga"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Localização"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr "Relatar mídia"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Etiquetas"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Não foi possível ler o arquivo de imagem."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Ops!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Um erro ocorreu"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Requisição inválida"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "A requisição enviada para o servidor é inválida, por favor verifique novamente"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Operação não permitida"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Me desculpe Dave, não posso deixar você fazer isso!</p><p>Você tentou executar uma função sem autorização. Por acaso estava novamente tentando excluir todas as contas de usuários?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Parece que não há uma página com este endereço. Desculpe!</p><p>Se você tem certeza que este endereço está correto, talvez a página que esteja procurando tenha sido movida ou excluída."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "ano"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "mês"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "semana"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "dia"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hora"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minuto"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comentário"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Você pode usar <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> para formatação."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Tenho certeza que quero remover este item da coleção"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Coleção"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Selecionar --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Incluir uma nota"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação de texto."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Motivo para o relatório"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Desculpe, os comentários estão desabilitados."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Ops, seu comentário estava vazio."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Seu comentário foi publicado!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Por favor, verifique suas entradas e tente novamente."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Você deve selecionar ou adicionar uma coleção"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" já está na coleção \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" adicionado à coleção \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Você excluiu a mídia."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Você vai excluir uma mídia de outro usuário. Tenha cuidado."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Você excluiu o item da coleção."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "O item não foi removido porque você não marcou que tinha certeza."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Você está prestes a excluir um item da coleção de um outro usuário. Tenha cuidado."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Você excluiu a coleção \"%s\""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "A coleção não foi excluída porque você não marcou que tinha certeza."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Você está prestes a excluir a coleção de um outro usuário. Tenha cuidado."
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 0cc5a608..00000000
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ro/mediagoblin.po
index baebc622..cac4f0bb 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ro/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Romanian (http://www.transifex.com/projects/p/mediagoblin/language/ro/)\n"
"MIME-Version: 1.0\n"
@@ -20,70 +20,174 @@ msgstr ""
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Ne pare rău, dar înscrierile sunt dezactivate pe acest server."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Nume de utilizator sau adresă de e-mail nevalidă."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Această rubrică nu este pentru adrese de e-mail."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Această rubrică trebuie completată cu o adresă de e-mail."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Ne pare rău, există deja un utilizator cu același nume."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Există deja un utilizator înregistrat cu această adresă de e-mail."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Adresa ta de e-mail a fost verificată. Poți să te autentifici, să îți completezi profilul și să trimiți imagini!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Cheie de verificare sau user ID incorect."
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "Trebuie să fii autentificat ca să știm cui să trimitem mesajul!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Adresa ta de e-mail a fost deja verificată!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "E-mail-ul de verificare a fost retrimis."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titlu"
@@ -92,7 +196,7 @@ msgid "Description of this work"
msgstr "Descrierea acestui fișier"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -108,11 +212,11 @@ msgstr "Cuvinte-cheie"
msgid "Separate tags by commas."
msgstr "Desparte cuvintele-cheie prin virgulă."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Identificator"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Identificatorul nu poate să lipsească"
@@ -140,125 +244,137 @@ msgstr "Sit Web"
msgid "This address contains errors"
msgstr "Această adresă prezintă erori"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Trimite-mi un e-mail când alții comentează fișierele mele"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Licența preferată"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Aceasta va fi licența implicită pe formularele de upload."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "Titlul nu poate să fie gol"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Descriere pentru această colecție"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Partea din adresa acestei colecții care corespunde titlului. De regulă nu e necesar să faci o modificare."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Vechea parolă"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Introdu vechea parolă pentru a demonstra că ești titularul acestui cont."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Noua parolă"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Parolă"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Există deja un entry cu același identificator pentru acest utilizator."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Editezi fișierul unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Ai anexat %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Nu poți modifica decât propriul tău profil."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Editezi profilul unui utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Modificările profilului au fost salvate"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Setările pentru acest cont au fost salvate"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Trebuie să confirmi ștergerea contului tău."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Ai deja o colecție numită \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "O colecție cu același slug există deja pentru acest utilizator."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Lucrezi pe colecția unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Parolă incorectă"
@@ -289,7 +405,7 @@ msgstr "S-a omis \"%s\"; configurat deja.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "Există deja un link pentru \"%s\"; va fi șters.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -297,58 +413,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -374,28 +490,28 @@ msgstr "Descriere"
msgid "I am sure I want to delete this"
msgstr "Sunt sigur că doresc să șterg"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Ura! Trimis!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Fișierul nu a fost șters deoarece nu ai confirmat că ești sigur."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -415,7 +531,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Editare"
@@ -425,7 +541,7 @@ msgstr "Editare"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Șterge"
@@ -540,7 +656,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -558,26 +725,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -632,7 +799,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -761,23 +928,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -925,11 +1089,7 @@ msgstr "Trimite instrucțiuni"
msgid "Forgot your password?"
msgstr "Ai uitat parola?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Locul"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Vezi pe <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -996,7 +1156,7 @@ msgstr "URI-ul de redirectare pentru aplicații, această rubrică\n
msgid "This field is required for public clients"
msgstr "Această rubrică este obligatorie pentru clienții publici"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "Clientul {0} a fost înregistrat!"
@@ -1009,8 +1169,8 @@ msgid "Your OAuth clients"
msgstr "Clienții tăi OAuth"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1018,39 +1178,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1074,7 +1234,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1106,26 +1266,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1149,15 +1309,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1176,11 +1336,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Trebuie să selectezi un fișier."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Colecția \"%s\" a fost creată!"
@@ -1203,30 +1363,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Verifică adresa de e-mail!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "Ieșire"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Contul lui <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Modifică setările contului"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1234,25 +1390,29 @@ msgstr "Modifică setările contului"
msgid "Media processing panel"
msgstr "Panou de procesare media"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Ieșire"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Trimite fișier"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Creează colecție nouă"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1306,7 +1466,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1397,13 +1557,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Editare anexe la %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Anexe"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Atașează"
@@ -1421,6 +1581,47 @@ msgstr "Salvează modificările"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "în urmă cu %(formatted_time)s"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1446,7 +1647,7 @@ msgstr "Se modifică setările contului pentru userul %(username)s"
msgid "Delete my account"
msgstr "Șterge contul meu"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1500,19 +1701,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "în urmă cu %(formatted_time)s"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1525,38 +1713,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr "Fișier etichetat cu cuvintele-cheie: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Download"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Ne pare rău, această înregistrare audio nu poate fi redată, deoarece \n\tbrowserul tău nu este compatibil cu funcția audio din HTML5."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Poți lua un browser modern \n\tcapabil să redea această înregistrare de la <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Fișierul original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "Fișier WebM (codec Vorbis)"
@@ -1564,70 +1752,70 @@ msgstr "Fișier WebM (codec Vorbis)"
msgid "Created"
msgstr "Creat"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Imagine pentru %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "Fișier PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspectivă"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Din față"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "De sus"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Lateral"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Descarcă modelul"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Formatul fișierului"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Înălțimea obiectului"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "Ne pare rău, dar această înregistrare video nu va funcționa deoarece browser-ul dvs. nu este compatibil cu HTML5 video."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "Puteți obține un browser Web modern care poate reda această înregistrare de la <a href=\"http://getfirefox.com\">http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1641,6 +1829,32 @@ msgstr "Aici poți urmări starea fișierelor aflate în curs de procesare pe ac
msgid "Media in-processing"
msgstr "Fișiere în curs de procesare"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1651,6 +1865,14 @@ msgstr "Niciun fișier în curs de procesare"
msgid "These uploads failed to process:"
msgstr "Aceste fișiere nu au putut fi procesate:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1660,6 +1882,10 @@ msgstr "Niciun entry cu erori!"
msgid "Last 10 successful uploads"
msgstr "Ultimele 10 upload-uri reușite"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1674,7 +1900,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1700,6 +1926,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1949,10 +2179,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1980,17 +2206,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Adaugă un comentariu"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Trimite acest comentariu"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Adăugat"
@@ -2062,12 +2288,12 @@ msgstr "Fișierele lui <a href=\"%(user_url)s\">%(username)s</a> cu cuvântul-ch
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "<p>■Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a></p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2182,6 +2408,14 @@ msgstr "Din colecția"
msgid "Add to a collection"
msgstr "Adaugă la o colecție"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2218,6 +2452,10 @@ msgstr "mai noi"
msgid "older"
msgstr "mai vechi"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Locul"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2226,38 +2464,38 @@ msgstr ""
msgid "Tagged with"
msgstr "Etichetat cu cuvintele-cheie"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Fișierul cu imaginea nu a putut fi citit."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Hopa!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "S-a produs o eroare"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Operația nu este permisă"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Îmi pare rău, Dave, nu te pot lăsa să faci asta!</p><p>Ai încercat să faci o operație nepermisă. Ai încercat iar să ștergi toate conturile utilizatorilor?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2325,69 +2563,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Comentariile sunt dezactivate."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Hopa, ai uitat să scrii comentariul."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Comentariul tău a fost trimis!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Verifică datele și încearcă din nou."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Trebuie să alegi sau să creezi o colecție"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" este deja în colecția \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" a fost adăugat la colecția \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Ai șters acest fișier"
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Urmează să ștergi fișierele media ale unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "Ai șters acest articol din colecție."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Articolul nu a fost șters pentru că nu ai confirmat că ești sigur(ă)."
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Urmează să ștergi un articol din colecția unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Ai șters colecția \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "Colecția nu a fost ștearsă pentru că nu ai confirmat că ești sigur(ă)."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Urmează să ștergi colecția unui alt utilizator. Se recomandă prudență."
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 900cccb1..00000000
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 77c03cab..00000000
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1849 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# aleksejrs <deletesoftware@yandex.ru>, 2013-2014
-# aleksejrs <deletesoftware@yandex.ru>, 2011-2012
-# Yury Sakarinen, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-04-27 19:14+0000\n"
-"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/mediagoblin/language/ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: ru\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"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "Извините, на Ñтом Ñайте региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð°."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "Извините, Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° Ñтом Ñайте отключена."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Это поле не Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Это поле — Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "Извините, пользователь Ñ Ñтим именем уже зарегиÑтрирован."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "Сожалеем, но на Ñтот Ð°Ð´Ñ€ÐµÑ Ñлектронной почты уже зарегиÑтрирована Ð´Ñ€ÑƒÐ³Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr ""
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты потвержден. Ð’Ñ‹ теперь можете войти и начать редактировать Ñвой профиль и загружать новые изображениÑ!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "Ðеверный ключ проверки или идентификатор пользователÑ"
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Вам надо предÑтавитьÑÑ, чтобы мы знали, кому отправлÑть Ñообщение!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Ð’Ñ‹ уже потвердили Ñвой Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Отправить заново Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подтверждение по е-мÑйл."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Ðазвание"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "ОпиÑание Ñтого произведениÑ"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ¸ можете иÑпользовать Ñзык\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a>."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Метки"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "(через запÑтую)"
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа необходима"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "ЧаÑть адреÑа Ñтого файла, Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¾Ñ‚ его названиÑ. Её обычно не требуетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñть."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "ЛицензиÑ"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "БиографиÑ"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Сайт"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Этот Ð°Ð´Ñ€ÐµÑ Ñодержит ошибки"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "УведомлÑть Ð¼ÐµÐ½Ñ Ð¿Ð¾ e-mail о комментариÑÑ… к моим файлам"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr ""
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°ÐµÐ¼Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Она будет лицензией по умолчанию Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… загрузок"
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "Ðазвание не может быть пуÑтым"
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "ОпиÑание Ñтой коллекции"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа Ñтой коллекции, оÑÐ½Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° названии. Обычно не нужно её изменÑть."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Старый пароль"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Введите Ñвой Ñтарый пароль в качеÑтве доказательÑтва, что Ñто ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Ðовый пароль"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Ðовый Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Пароль"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Введите Ñвой пароль в качеÑтве доказательÑтва, что Ñто ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть файл Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Ð’Ñ‹ редактируете файлы другого пользователÑ. Будьте оÑторожны."
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Ð’Ñ‹ добавили ÑопутÑтвующий файл %s!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Ð’Ñ‹ можете редактировать только Ñвой ÑобÑтвенный профиль."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Ð’Ñ‹ редактируете профиль пользователÑ. Будьте оÑторожны."
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ñохранены"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "ÐаÑтройки учётной запиÑи запиÑаны"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "Вам нужно подтвердить, что вы хотите удалить Ñвою учётную запиÑÑŒ."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "У Ð²Ð°Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ «%s»!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Ð’Ñ‹ редактируете коллекцию другого пользователÑ. Будьте оÑторожны."
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты удоÑтоверен."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Ðеправильный пароль"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Ðевозможно привÑзать тему… не выбрано ÑущеÑтвующей темы\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "У Ñтой темы отÑутÑтвует каталог Ñ Ñлементами оформлениÑ\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Однако найдена (и удалена) ÑÑ‚Ð°Ñ€Ð°Ñ ÑимволичеÑÐºÐ°Ñ ÑÑылка на каталог.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr ""
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr ""
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr ""
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "Увы, Ñ Ð½Ðµ поддерживаю Ñтот тип файлов :("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr ""
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Перекодировка видео не удалаÑÑŒ"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Лишить полномочиÑ"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Забанить Ñтого пользователÑ"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr "Отправить пользователю Ñообщение"
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr "Каких полномочий лишить?"
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr "Предупреждение от"
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "оÑтавил комментарий к вашему файлу"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr ""
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr ""
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "ЕÑли Ñ Ñтим адреÑом Ñлектронной почты (Ñравниваемым чувÑтвительно к региÑтру Ñимволов!) еÑть ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, то на него отправлено Ñообщение Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñми о том, как Ñменить пароль."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Ðе найдено никого Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем пользователÑ."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "Вам отправлено Ñлектронное пиÑьмо Ñ Ð¸Ð½ÑтрукциÑми по Ñмене паролÑ."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Мы не можем отправить Ñообщение Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ, потому что ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна, либо указанный в ней Ð°Ð´Ñ€ÐµÑ Ñлектронной почты не был подтверждён."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ неверно."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Теперь вы можете войти, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð°Ñˆ новый пароль."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Ваш пароль Ñменён уÑпешно"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Введите Ñвой новый пароль"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "УÑтановить пароль"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Сохранить"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "Ðет аккаунта?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Создайте здеÑÑŒ!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Отправить инÑтрукцию"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Забыли Ñвой пароль?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Ðа карте"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "ПоÑмотреть на <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Разрешить"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Запретить"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "ИмÑ"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "ОпиÑание"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Его увидÑÑ‚ пользователи, разрешающие вашему приложению дейÑтвовать от их имени."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Тип"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Клиент {0} зарегиÑтрирован!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Добавить"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr ""
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Добавить OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Удалить OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Удалить"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Войти"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÑƒÑпешна!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "ÐвторизуйтеÑÑŒ, чтобы Ñоздать учётную запиÑÑŒ!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Или войдите Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ паролÑ!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr ""
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "Сожалеем, но у Ð½Ð°Ñ ÑƒÐ¶Ðµ еÑть ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ñ Ñтим email-адреÑом Persona ."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Удалить email-Ð°Ð´Ñ€ÐµÑ Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Добавить email-Ð°Ð´Ñ€ÐµÑ Persona"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Ðеправильный формат файла."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr ""
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr "МакÑ. размер файла: {0} Мб."
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Файл"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ¸ можете иÑпользовать Ñзык\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a>."
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Вы должны загрузить файл."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Ура! Файл загружен!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Â«%s» добавлена!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr "Вы заблокированы."
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Изображение нервничающего гоблина"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr "Ð’Ð°Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð»Ð¸"
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr "до %(until_when)s"
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "на неопределённый Ñрок"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Подтвердите ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "завершение ÑеанÑа"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "Изменить наÑтройки учётной запиÑи"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Панель обработки файлов"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Завершение ÑеанÑа"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Добавить файлы"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Создать новую коллекцию"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Самые новые файлы"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ñтупом к вашей учётной запиÑи могут:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "загружать файлы от вашего имени"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "ПоÑмотреть личную информацию (напр. профиль, файлы и Ñ‚.д.)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Создайте аккаунт!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Создать"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Привет, %(username)s!\n\nЧтобы активировать Ñвой аккаунт в GNU MediaGoblin, откройте в Ñвоём вебâ€Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ðµ Ñледующую ÑÑылку:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Работает на <a href=\"http://mediagoblin.org/\" title='ВерÑии %(version)s'>MediaGoblin</a>, проекте <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Он опубликован на уÑловиÑÑ… <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. ДоÑтупны <a href=\"%(source_link)s\">иÑходные текÑты</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Смотреть"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Привет! Добро пожаловать на наш MediaGoblin’овый Ñайт!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Этот Ñайт работает на <a href=\"http://mediagoblin.org\">MediaGoblin</a>, необыкновенно замечательном ПО Ð´Ð»Ñ Ñ…Ð¾Ñтинга мультимедийных файлов."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑобÑтвенных файлов, ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚. п. вы можете предÑтавитьÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вашей MediaGoblin’овой учётной запиÑи."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "У Ð²Ð°Ñ ÐµÑ‘ ещё нет? Ðе проблема!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >Создайте учётную запиÑÑŒ на Ñтом Ñайте</a>\n или"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "Символ MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Добавление ÑопутÑтвующего файла Ð´Ð»Ñ %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "СопутÑтвующие файлы"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Добавить ÑопутÑтвующий файл"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Отмена"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Сохранить изменениÑ"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Изменение email-адреÑа %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "Ðа Ñамом деле удалить аккаунт «%(user_name)s» и вÑе ÑвÑзанные файлы и комментарии?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Да, на Ñамом деле удалить мою учётную запиÑÑŒ"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Удалить безвозвратно"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Редактирование %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "ÐаÑтройка учётной запиÑи %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "Удалить мою учётную запиÑÑŒ"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "Е-майл "
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Редактирование %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Редактирование Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Привет,\n\nМы хотели удоÑтоверитьÑÑ, что Ð’Ñ‹ — %(username)s. ЕÑли Ñто дейÑтвительно\nвы, то пожалуйÑта, пройдите по ÑÑылке ниже, чтобы подтвердить, что Ñто\nваш новый email-адреÑ.\n\n%(verification_url)s\n\nЕÑли вы не %(username)s или не запрашивали изменение адреÑа, можете не\nобращать Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð½Ð° Ñто пиÑьмо."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Ðовые комментарии"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s назад"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "Отметить вÑе, как прочтенные"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Файлы Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Скачать"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Оригинал"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Сожалеем, Ñтот аудиоролик не проиграетÑÑ, âŽ\n» потому что ваш браузер не поддерживает âŽ\n» аудио в ÑоответÑтвии Ñо Ñтандартом HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Ð’Ñ‹ можете Ñкачать Ñовременный браузер, \n\tÑпоÑобный проиграть Ñто аудио, Ñ <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "ИÑходный файл"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "WebMâ€Ñ„айл (кодек — Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Создан"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Изображение «%(media_title)s»"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "PDF-файл"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "ПерÑпектива"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "Спереди"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Сверху"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Сбоку"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Скачать модель"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Формат файла"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Ð’Ñ‹Ñота объекта"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "Сожалеем, Ñтот ролик не проиграетÑÑ, âŽ\nпотому что ваш браузер не поддерживает âŽ\nвидео в ÑоответÑтвии Ñо Ñтандартом HTML5."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "Ð’Ñ‹ можете Ñкачать Ñовременный браузер, ÑпоÑобный воÑпроизводить Ñто видео, Ñ <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "WebM файл (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "ЗдеÑÑŒ вы можете Ñледить за ÑоÑтоÑнием обработки файлов Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñайта."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Обработка файлов в процеÑÑе"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Ðету файлов Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Обработка Ñтих файлов вызвала ошибку:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "ÐеудавшихÑÑ Ð·Ð°Ð´Ð°Ñ‡ нет!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "ПоÑледние 10 удавшихÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Выполненных задач пока нет!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Добавление коллекции"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Добавление ваших файлов"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s)"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Изменить"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "Удалить %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Ð’ Ñамом деле иÑключить %(media_title)s из %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "ИÑключить"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Коллекции %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Коллекции <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Привет, %(username)s.\nПользователь %(comment_author)s оÑтавил комментарий к вашему файлу (%(comment_url)s) at %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Файлы %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Файлы <a href=\"%(user_url)s\">%(username)s</a> Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹ <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Файлы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■ПроÑмотр файлов Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Добавить комментарий"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Добавить Ñтот комментарий"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Предварительный проÑмотр комментариÑ"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Добавлен"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Добавление «%(media_title)s» в коллекцию"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Добавление новой коллекции"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Ð’Ñ‹ можете Ñледить за ÑтатуÑом обработки файлов Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ галереи здеÑÑŒ."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Ваши поÑледние 10 удавшихÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr "\n ■Опубликовано <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "ЗдеÑÑŒ вы можете раÑÑказать о Ñебе."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Редактировать профиль"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "Этот пользователь не заполнил Ñвой профайл (пока)."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Смотреть коллекции"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Смотреть вÑе файлы %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "Ваши файлы поÑвÑÑ‚ÑÑ Ð·Ð´ÐµÑÑŒ, когда вы их добавите."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Пока что тут файлов нет…"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Ðужно подтверждение почтового адреÑа"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Почти закончили! Теперь надо активировать ваш аккаунт."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Через пару мгновений на Ð°Ð´Ñ€ÐµÑ Ð²Ð°ÑˆÐµÐ¹ Ñлектронной почты должно прийти Ñообщение Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ¸Ð¼Ð¸ инÑтрукциÑми."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "РеÑли нет, то:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Повторно отправить Ñообщение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "Ктоâ€Ñ‚о Ñоздал аккаунт Ñ Ñтим именем, но его еще надо активировать."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "ЕÑли Ñто были вы, и еÑли вы потерÑли Ñообщение Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°, то вы можете <a href=\"%(login_url)s\">войти</a> и отправить его повторно."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(иÑключить)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Ð’ коллекциÑÑ…:"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Добавить в коллекцию"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "значок ленты"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "лента в формате Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Ð’Ñе права Ñохранены"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Более новые"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Более Ñтарые →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Перейти к Ñтранице:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "более новые"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "более Ñтарые"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "Метки"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Ðе удалоÑÑŒ прочитать файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Ой!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Произошла ошибка"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Ðеверный запроÑ"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr ""
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ позволÑетÑÑ"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr ""
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Похоже, по Ñтому адреÑу нет Ñтраницы. Сожалеем!</p><p>Возможно, Ñтраница, которую вы ищете, была удалена или переехала."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "год"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "меÑÑц"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "неделÑ"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "день"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "чаÑ"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "мин"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Комментировать"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "ПоддерживаетÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ° на Ñзыке <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a>."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "Я уверен, что хочу удалить Ñто"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "Я уверен, что хочу иÑключить Ñтот файл из коллекции"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "КоллекциÑ"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Выберите --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Примечание"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "Сожалеем: возможноÑть ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Ой, ваш комментарий был пуÑÑ‚."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Ваш комментарий размещён!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "ПожалуйÑта, проверьте введённое и попробуйте ещё раз."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Ðеобходимо выбрать или добавить коллекцию"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "«%s» — уже в коллекции «%s»"
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "«%s» добавлено в коллекцию «%s»"
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Вы удалили файл."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Файл не удалён, так как вы не подтвердили Ñвою уверенноÑть галочкой."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Ð’Ñ‹ на пороге ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° другого пользователÑ. Будьте оÑторожны."
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Ð’Ñ‹ иÑключили файл из коллекции."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "Файл не иÑключён из коллекции, так как вы не подтвердили Ñвоё намерение отметкой."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Ð’Ñ‹ на пороге иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° из коллекции другого пользователÑ. Будьте оÑторожны."
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Вы удалили коллекцию «%s»"
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð½Ðµ удалена, так как вы не подтвердили Ñвоё намерение отметкой."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Ð’Ñ‹ на пороге ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ð¸ другого пользователÑ. Будьте оÑторожны."
diff --git a/mediagoblin/i18n/ru/mediagoblin.po b/mediagoblin/i18n/ru/mediagoblin.po
new file mode 100644
index 00000000..f45108cc
--- /dev/null
+++ b/mediagoblin/i18n/ru/mediagoblin.po
@@ -0,0 +1,2787 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# aleksejrs <deletesoftware@yandex.ru>, 2013-2014
+# aleksejrs <deletesoftware@yandex.ru>, 2011-2012
+# Yury Sakarinen, 2013
+# Denis <didenko.denis@gmail.com>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2016-02-09 15:58+0000\n"
+"Last-Translator: Denis <didenko.denis@gmail.com>\n"
+"Language-Team: Russian "
+"(http://www.transifex.com/projects/p/mediagoblin/language/ru/)\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1455033530.0\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Извините, на Ñтом Ñайте региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð°."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "Извините, жалобы отключены на Ñтом Ñайте."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "Извините, Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° Ñтом Ñайте отключена."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Это поле не Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Это поле — Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "Извините, пользователь Ñ Ñтим именем уже зарегиÑтрирован."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "Сожалеем, но на Ñтот Ð°Ð´Ñ€ÐµÑ Ñлектронной почты уже зарегиÑтрирована Ð´Ñ€ÑƒÐ³Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "Ðеверный ключ проверки или идентификатор пользователÑ."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты потвержден. Ð’Ñ‹ теперь можете войти и начать редактировать Ñвой профиль и загружать новые изображениÑ!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "Ðеверный ключ проверки или идентификатор пользователÑ"
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Вам надо предÑтавитьÑÑ, чтобы мы знали, кому отправлÑть Ñообщение!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Ð’Ñ‹ уже потвердили Ñвой Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Отправить заново Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подтверждение по е-мÑйл."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} добавлÑет {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} добавлÑет {object} в {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} ÑвлÑетÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} Ñоздает {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} удалÑет {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} не нравитÑÑ {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{object} в избранном у {username}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} Ñледит за {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} нравитÑÑ {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} публикует {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} публикует {object} в {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} делитÑÑ {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} удалÑет из избранного {object}"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} уже не Ñледит за {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{object} переÑтал нравитÑÑ {username}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{object} обновлен {username}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} добавлÑет Ñ‚Ñги {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "изображение"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "комментарий"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "коллекциÑ"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "видео"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "аудио"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "перÑона"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "объект"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Ðазвание"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "ОпиÑание Ñтого произведениÑ"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+"Ð’Ñ‹ можете иÑпользовать\n"
+"<a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+"Markdown</a> в качеÑтве Ñзыка разметки."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Метки"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "РазделÑйте Ñ‚Ñги через запÑтую."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа необходима"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "ЧаÑть адреÑа Ñтого файла, Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¾Ñ‚ его названиÑ. Её обычно не требуетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñть."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "ЛицензиÑ"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "БиографиÑ"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Сайт"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Этот Ð°Ð´Ñ€ÐµÑ Ñодержит ошибки"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Город"
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "УведомлÑть Ð¼ÐµÐ½Ñ Ð¿Ð¾ e-mail о комментариÑÑ… к моим файлам"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑобытиÑÑ…."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°ÐµÐ¼Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Это будет лицензией по умолчанию Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… загрузок."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "Ðазвание не может быть пуÑтым"
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "ОпиÑание Ñтой коллекции"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+"ЧаÑть адреÑа Ñтой коллекции, оÑÐ½Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° названии. Обычно не требует "
+"изменениÑ."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Старый пароль"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Введите Ñвой Ñтарый пароль в качеÑтве доказательÑтва, что Ñто ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Ðовый пароль"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Ðовый Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Пароль"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Введите Ñвой пароль в качеÑтве доказательÑтва, что Ñто ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr "Идентификатор"
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr "Значение"
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть файл Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Ð’Ñ‹ редактируете файлы другого пользователÑ. Будьте оÑторожны."
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Ð’Ñ‹ добавили ÑопутÑтвующий файл %s!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Ð’Ñ‹ можете редактировать только Ñвой ÑобÑтвенный профиль."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Ð’Ñ‹ редактируете профиль пользователÑ. Будьте оÑторожны."
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ñохранены"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "ÐаÑтройки учётной запиÑи запиÑаны"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "ÐеизвеÑтное приложение, невозможно отменить авторизацию"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð° отменена"
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Вам нужно подтвердить, что вы хотите удалить Ñвою учётную запиÑÑŒ."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "У Ð²Ð°Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Ð’Ñ‹ редактируете коллекцию другого пользователÑ. Будьте оÑторожны."
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты удоÑтоверен."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Ðеправильный пароль"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Ðевозможно привÑзать тему… не выбрано ÑущеÑтвующей темы\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "У Ñтой темы отÑутÑтвует каталог Ñ Ñлементами оформлениÑ\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Однако найдена (и удалена) ÑÑ‚Ð°Ñ€Ð°Ñ ÑимволичеÑÐºÐ°Ñ ÑÑылка на каталог.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "ПропуÑк \"%s\"; уже наÑтроено.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Ðайдена (и удалена) уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ ÑÑылка Ð´Ð»Ñ \"%s\".\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ð¹ информации о том, как запуÑтить Ñтот\n"
+"Ñкрипт (и о том, как форматировать файл метаданных csv), прочтите Ñтраницу "
+"документации\n"
+"MediaGoblin о загрузке Ñ Ð¸Ñпользованием командной Ñтроки\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, который ÑвлÑетÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ Ñтих файлов"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr "Путь к csv файлу, Ñодержащему информацию о метаданных."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr "Извините, пользователь {username} не ÑущеÑтвует"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr "Файл в {path} не найден, иÑпользуйте флаг -h Ð´Ð»Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ð¸"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+"Ошибка Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ '{media_id}' значение '{error_path}': {error_msg}\n"
+"Метаданные не были загружены."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+"ОШИБКÐ: локальный файл {filename} недоÑтупен.\n"
+"{filename} не будет загружен."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+"Файл {filename} уÑпешно отправлен!\n"
+"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы убедитьÑÑ Ð² уÑпешной загрузке файла, пожалуйÑта, перейдите в\n"
+"Панель обработки файлов вашего Ñайта."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr "ОШИБКÐ: размер файла больше допуÑтимого лимита Ð´Ð»Ñ Ñтого Ñайта."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+"ОШИБКÐ: загрузка Ñтого файла приведет к превышению лимита загрузок Ð´Ð»Ñ Ñтого "
+"пользователÑ."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr "ОШИБКÐ: Ñтот пользователь уже превыÑил Ñвой лимит загрузок."
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr "{files_uploaded} из {files_attempted} файлов уÑпешно добавлены"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+"CSRF куки отÑутÑтвуют. Скорее вÑего, Ñто произошло из-за блокировки куков "
+"или чего-то подобного.<br/>УбедитеÑÑŒ в правильноÑти наÑтройки куков Ð´Ð»Ñ "
+"Ñтого домена."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "Увы, Ñ Ð½Ðµ поддерживаю Ñтот тип файлов :("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "ОпиÑание"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "Я уверен, что хочу удалить Ñто"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Ура! Файл загружен!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr "Ура! Отредактированный поÑÑ‚ отправлен."
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr "Блог удален."
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Файл не удалён, так как вы не подтвердили Ñвою уверенноÑть галочкой."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr "Ð’Ñ‹ ÑобираетеÑÑŒ удалить чей-то блог. Продолжайте Ñ Ð¾ÑторожноÑтью."
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr "У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтаточно прав Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñтого блога."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr "Добавить поÑÑ‚"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr "Редактировать блог"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr "Удалить блог"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Изменить"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Удалить"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr "<em> Перейти к ÑпиÑку </em>"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr " Пока что здеÑÑŒ ничего нет. "
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Удалить %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Отмена"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Удалить безвозвратно"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr "Создать/редактировать блог"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Добавить"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr "Создать/редактировать поÑÑ‚."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr "Создать/редактировать поÑÑ‚."
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr "Блог %(blog_owner_name)s"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr "Создать блог"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr " Панель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾Ð³Ð¾Ð¼ "
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "Ðевозможно запуÑтить unoconv, проверьте лог файл"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Перекодировка видео не удалаÑÑŒ"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Лишить полномочиÑ"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Забанить Ñтого пользователÑ"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr "Отправить пользователю Ñообщение"
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Удалить Ñодержимое"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "Пользователь будет заблокирован до:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "Причина, по которой пользователь будет заблокирован?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Какие дейÑÑ‚Ð²Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ предпринÑты Ð´Ð»Ñ ÑƒÐ´Ð¾Ð²Ð»ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð¶Ð°Ð»Ð¾Ð±Ñ‹?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr "Каких полномочий лишить?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Причина блокировки:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Сообщение Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Решение:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+"\n"
+"{mod} лишил Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ {user} привилегий {privilege}."
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} заблокировал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ {user} до {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "до {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "на неопределённый Ñрок"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} отправил предупреждение пользователю {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} удалил комментарий."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} удалил файл."
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Предупреждение от"
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "оÑтавил комментарий к вашему файлу"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Ð’Ñ‹ не будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ комментариÑÑ… в %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Ðеобходимо предоÑтавить oauth_token."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "ЗапроÑов не обнаружено."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr "Извините, размер файла Ñлишком велик."
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+"Извините, загрузка Ñтого файла приведет к превышению вашего лимита загрузок."
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr "Извините, вы доÑтигли лимита загрузок."
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr "Введите ÑÑылку на файл, чтобы закрепить его"
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr "ОÑновнаÑ"
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr "ВторичнаÑ"
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr "ТретичнаÑ"
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr "-----------{display_type}-Фичеринг---------------------------\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr "Как Ñто работает?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr "Как закрепить файл на главной Ñтранице?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+"\n"
+" Перейдите на Ñтраницу файла, который вы хотите закрепить. Скопируйте "
+"ÑÑылку\n"
+" на Ñтот файл, а затем вÑтавьте ее в поле выше. ÐšÐ°Ð¶Ð´Ð°Ñ Ð½Ð¾Ð²Ð°Ñ ÑÑылка "
+"должна быть\n"
+" помещена на новой Ñтроке. СÑылку необходимо Ñкопировать под один из "
+"заголовков,\n"
+" опиÑывающих Ñтепень видимоÑти закреплÑемого файла (запиÑÑŒ может быть\n"
+" ОÑновной, Вторичной или Третичной). Как только вÑе необходимые ÑÑылки "
+"будут\n"
+" Ñкопированы в текÑтовое поле, нажмите на кнопку Отправить, и ваши "
+"файлы\n"
+" поÑвÑÑ‚ÑÑ Ð½Ð° главной Ñтранице.\n"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr "СущеÑтвует ли иной ÑпоÑоб Ð·Ð°ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° на главной Ñтранице?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr "Что такое ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ? Что такое Ð’Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr "Как открепить файл?"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+"\n"
+" Чтобы открепить запиÑÑŒ, удалите ÑÑылку из текÑтового Ð¿Ð¾Ð»Ñ Ð²Ñ‹ÑˆÐµ,\n"
+" а затем нажмите на кнопку Отправить.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr "Ð’ÐИМÐÐИЕ:"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+"\n"
+" При копировании ÑÑылок в текÑтовое поле выше, пожалуйÑта, убедитеÑÑŒ в "
+"их\n"
+" правильноÑти, в противном Ñлучае ваши запиÑи ÐЕ будут закреплены. "
+"УбедитеÑÑŒ, что\n"
+" нужные вам файлы отображаютÑÑ Ñреди закрепленных запиÑей.\n"
+" "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+"\n"
+"Закрепить файл "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr "Закрепить"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+"\n"
+"Открепить файл "
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr "Открепить"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Самые новые файлы"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÑ‚ закрепленных запиÑей."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+"ЕÑли вы хотите закрепить файл,\n"
+" перейдите на Ñтраницу файла и нажмите на кнопку\n"
+" <a class=\"button_action\">Закрепить</a>."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr "ПоÑмотреть поÑледние файлы"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr "Управление закрепленными запиÑÑми"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+"Извините, невозможно воÑпроизвеÑти Ñто аудио,\n"
+"\tваш браузер не поддерживает воÑпроизведение Ñ Ð¸Ñпользованием\n"
+"\tHTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Получите Ñовременный браузер, ÑпоÑобный\n"
+"\tвоÑпроизвеÑти Ñто аудио, здеÑÑŒ <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+"Извините, невозможно воÑпроизвеÑти Ñто видео,\n"
+" ваш браузер не поддерживает воÑпроизведение Ñ Ð¸Ñпользованием\n"
+" HTML5."
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+"Получите Ñовременный браузер, ÑпоÑобный\n"
+" воÑпроизвеÑти Ñто видео, здеÑÑŒ <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Запомнить менÑ"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "ЕÑли Ñ Ñтим адреÑом Ñлектронной почты (Ñравниваемым чувÑтвительно к региÑтру Ñимволов!) еÑть ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, то на него отправлено Ñообщение Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñми о том, как Ñменить пароль."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Ðе найдено никого Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем пользователÑ."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "Вам отправлено Ñлектронное пиÑьмо Ñ Ð¸Ð½ÑтрукциÑми по Ñмене паролÑ."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "Мы не можем отправить Ñообщение Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ, потому что ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна, либо указанный в ней Ð°Ð´Ñ€ÐµÑ Ñлектронной почты не был подтверждён."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½ неверно."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Теперь вы можете войти, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð°Ñˆ новый пароль."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+"Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна. СвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором Ð´Ð»Ñ ÐµÐµ "
+"реактивации."
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Ваш пароль Ñменён уÑпешно"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Введите Ñвой новый пароль"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "УÑтановить пароль"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Сохранить"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "Ðет аккаунта?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Создайте здеÑÑŒ!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Отправить инÑтрукцию"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Забыли Ñвой пароль?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "ПоÑмотреть на <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "ЗарегиÑтрируйтеÑÑŒ, чтобы Ñоздать учетную запиÑÑŒ!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr "Метаданные"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr "Редактировать метаданные"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Разрешить"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Запретить"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "ИмÑ"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "Ðазвание клиента OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+"Это увидÑÑ‚ пользователи, разрешающие вашему\n"
+" приложению аутентифицироватьÑÑ Ð¿Ð¾Ð´ их именем."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Тип"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "Клиент {0} зарегиÑтрирован!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "Извините, Ñтот OpenID уже привÑзан к учетной запиÑи."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "Извините, Ñервер OpenID не может быть найден"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Ошибка проверки %s: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Проверка отменена"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "СÑылка на ваш OpenID уÑпешно Ñохранена."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "OpenID не может быть удален, пока не уÑтановлен пароль"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "Этот OpenID не привÑзан к текущей учетной запиÑи."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Добавить OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Удалить OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Войти"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÑƒÑпешна!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "ÐвторизуйтеÑÑŒ, чтобы Ñоздать учётную запиÑÑŒ!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Или войдите Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ паролÑ!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "Извините, Ñтот Ð°Ð´Ñ€ÐµÑ Persona уже привÑзан к учетной запиÑи."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "Извините, Ñтот Ð°Ð´Ñ€ÐµÑ Persona уже привÑзан к учетной запиÑи."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Удалить email-Ð°Ð´Ñ€ÐµÑ Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Добавить email-Ð°Ð´Ñ€ÐµÑ Persona"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Ðеправильный формат файла."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr "МакÑ. размер файла: {0} Мб."
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Файл"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+"Ð’Ñ‹ можете иÑпользовать\n"
+"<a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+"Markdown</a> в качеÑтве Ñзыка разметки."
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Вы должны загрузить файл."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ \"%s\" добавлена!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr "Вы заблокированы."
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Изображение нервничающего гоблина"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr "Ð’Ð°Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð»Ð¸"
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr "до %(until_when)s"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Подтвердите ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "завершение ÑеанÑа"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "Изменить наÑтройки учётной запиÑи"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Панель обработки файлов"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Завершение ÑеанÑа"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Добавить файлы"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Создать новую коллекцию"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "МодерациÑ:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr "Управление пользователÑми"
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr "Управление жалобами"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ñтупом к вашей учетной запиÑи могут: "
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Загружать новые файлы от вашего имени"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "ПоÑмотреть личную информацию (напр. профиль, файлы и Ñ‚.д.)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Создайте аккаунт!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Создать"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+"Привет, %(username)s!\n"
+"\n"
+"Чтобы активировать учетную запиÑÑŒ GNU MediaGoblin, откройте Ñледующую ÑÑылку "
+"в\n"
+"вашем браузере:\n"
+"\n"
+"%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Работает на <a href=\"http://mediagoblin.org/\" title='ВерÑии %(version)s'>MediaGoblin</a>, проекте <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+"Опубликовано на уÑловиÑÑ… <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. "
+"ДоÑтупны <a href=\"%(source_link)s\">иÑходные текÑты</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Смотреть"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Привет! Добро пожаловать на Ñайт под управлением MediaGoblin!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Этот Ñайт работает на <a href=\"http://mediagoblin.org\">MediaGoblin</a>, необыкновенно замечательном ПО Ð´Ð»Ñ Ñ…Ð¾Ñтинга мультимедийных файлов."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑобÑтвенных файлов, ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚. п. вы можете предÑтавитьÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вашей MediaGoblin’овой учётной запиÑи."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "У Ð²Ð°Ñ ÐµÑ‘ ещё нет? Ðе проблема!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Символ MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Добавление ÑопутÑтвующего файла Ð´Ð»Ñ %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "СопутÑтвующие файлы"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Добавить ÑопутÑтвующий файл"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Сохранить изменениÑ"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Изменение email-адреÑа %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+"Эти Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÑŽÑ‚ доÑтуп к вашей учетной запиÑи GNU MediaGoblin. "
+"ДеавторизациÑ\n"
+" приведет к невозможноÑти доÑтупа Ñтих приложений к вашей учетной запиÑи."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Ðет авторизованных приложений."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Тип:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s назад"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+"ДейÑтвительно удалить аккаунт %(user_name)s, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ñе ÑвÑзанные файлы и "
+"комментарии?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Да, на Ñамом деле удалить мою учётную запиÑÑŒ"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Редактирование %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "ÐаÑтройка учётной запиÑи %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "Удалить мою учётную запиÑÑŒ"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "Изменить email"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Редактирование %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Редактирование Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr "Метаданные Ð´Ð»Ñ \"%(media_name)s\""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr "Метаданные"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr "Добавить новую Ñтроку"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr "Обновить метаданные"
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr "ОчиÑтить пуÑтые Ñтроки"
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+"Привет,\n"
+"\n"
+"Мы хотели бы убедитьÑÑ, что %(username)s — Ñто вы. ЕÑли Ñто так, тогда\n"
+"проÑледуйте по Ñледующей ÑÑылке, чтобы подтвердить новый Ð°Ð´Ñ€ÐµÑ Ñлектронной "
+"почты.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"ЕÑли вы не ÑвлÑетеÑÑŒ пользователем %(username)s, или не запрашивали "
+"изменение\n"
+"адреÑа Ñлектронной почты, пожалуйÑта, проигнорируйте Ñто Ñообщение."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Ðовые комментарии"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "Отметить вÑе, как прочтенные"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Файлы Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Скачать"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Оригинал"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+"Извините, невозможно воÑпроизвеÑти Ñто аудио, \n"
+"\t ваш браузер не поддерживает воÑпроизведение Ñ Ð¸Ñпользованием \n"
+"\t HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Получите Ñовременный браузер, ÑпоÑобный\n"
+"\t воÑпроизвеÑти Ñто аудио, здеÑÑŒ <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "ИÑходный файл"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "WebMâ€Ñ„айл (кодек — Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Создан"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Изображение Ð´Ð»Ñ %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "PDF-файл"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "ПерÑпектива"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "Спереди"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Сверху"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Сбоку"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Скачать модель"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Формат файла"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Ð’Ñ‹Ñота объекта"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+"Извините, невозможно воÑпроизвеÑти Ñто видео,\n"
+" ваш браузер не поддерживает воÑпроизведение Ñ Ð¸Ñпользованием\n"
+" HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+"Получите Ñовременный браузер, ÑпоÑобный\n"
+" воÑпроизвеÑти Ñто видео, здеÑÑŒ <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "WebM файл (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "ЗдеÑÑŒ вы можете Ñледить за ÑоÑтоÑнием обработки файлов Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñайта."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Обработка файлов в процеÑÑе"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Пользователь"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "ПрогреÑÑ Ñ‚Ñ€Ð°Ð½Ñкодинга"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "ÐеизвеÑтно"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Ðету файлов Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Обработка Ñтих файлов вызвала ошибку:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "ÐеудавшихÑÑ Ð·Ð°Ð´Ð°Ñ‡ нет!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "ПоÑледние 10 удавшихÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Выполненных задач пока нет!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr "Жалоба"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr "Комментарий Ñ Ð¶Ð°Ð»Ð¾Ð±Ð¾Ð¹"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Причина жалобы:"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr "Решить"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr "Решить Ñту жалобу"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr "СтатуÑ"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr "РЕШЕÐО"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr "Ð’Ñ‹ не можете принимать какие-либо меры в отношении админиÑтратора"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr "Управление жалобами"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+"\n"
+" ЗдеÑÑŒ можно увидеть жалобы, отправленные пользователÑми.\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Ðарушитель"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Ðет закрытых жалоб."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr "Пользователь: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr "ВернутьÑÑ Ðº управлению пользователÑми"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr "Извините, пользователь не найден."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Ðужно подтверждение почтового адреÑа"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+"Кто-то зарегиÑтрировал учетную запиÑÑŒ под Ñтим именем, но она вÑе еще\n"
+" должна быть активирована."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr "ЗÐБЛОКИРОВÐРдо %(expiration_date)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr "БеÑÑÑ€Ð¾Ñ‡Ð½Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "Этот пользователь не заполнил Ñвой профайл (пока)."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Редактировать профиль"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Смотреть коллекции"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr "ОпиÑание жалобы"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr "Жалоба #%(report_number)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr "Комментарий Ñ Ð¶Ð°Ð»Ð¾Ð±Ð¾Ð¹"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr "Файл Ñ Ð¶Ð°Ð»Ð¾Ð±Ð¾Ð¹"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr "Привилегии %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr "ПривилегиÑ"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr "Разрешено"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr "Да"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr "Ðет"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr "Заблокировать"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr "Разблокировать"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr "Управление пользователÑми"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+"\n"
+" СпиÑок пользователей, к которым можно применить наказательные меры.\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr "Ðктивные пользователи"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr "Дата региÑтрации"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr "# опубликованных комментариев"
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr "Пользователи не найдены."
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Добавление коллекции"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Добавление ваших файлов"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■ПоÑÑ‚ в блоге от <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Добавить комментарий"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Добавить Ñтот комментарий"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Добавлен"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr "Удалить коллекцию %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr "ДейÑтвительно удалить коллекцию: %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr "Удалить %(media_title)s из %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Ð’ Ñамом деле иÑключить %(media_title)s из %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "ИÑключить"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Коллекции %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Коллекции <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+"Привет, %(username)s!\n"
+"%(comment_author)s оÑтавил комментарий к (%(comment_url)s) на %"
+"(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Файлы %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+"Файлы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a> Ñ Ñ‚Ñгом <a href=\""
+"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Файлы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■ПроÑмотр файлов Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Предварительный проÑмотр комментариÑ"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Добавление “%(media_title)s†в коллекцию"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Добавление новой коллекции"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Ð’Ñ‹ можете Ñледить за ÑтатуÑом обработки файлов Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ галереи здеÑÑŒ."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Ваши поÑледние 10 удавшихÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr "ПожаловатьÑÑ Ð½Ð° комментарий"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr "ПожаловатьÑÑ Ð½Ð° файл"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr "\n ■Опубликовано <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "ЗдеÑÑŒ вы можете раÑÑказать о Ñебе."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Смотреть вÑе файлы %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Ваши файлы поÑвÑÑ‚ÑÑ Ð·Ð´ÐµÑÑŒ, когда вы их добавите."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Пока что здеÑÑŒ ничего нет..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Почти закончили! Теперь надо активировать ваш аккаунт."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "Через пару мгновений на Ð°Ð´Ñ€ÐµÑ Ð²Ð°ÑˆÐµÐ¹ Ñлектронной почты должно прийти Ñообщение Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ¸Ð¼Ð¸ инÑтрукциÑми."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "РеÑли нет, то:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Повторно отправить Ñообщение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "Ктоâ€Ñ‚о Ñоздал аккаунт Ñ Ñтим именем, но его еще надо активировать."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+"ЕÑли Ñто были вы, и вы потерÑли Ñообщение Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи, "
+"<a href=\"%(login_url)s\">войдите</a>, чтобы отправить его повторно."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(иÑключить)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Ð’ коллекциÑÑ…:"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Добавить в коллекцию"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "ПодпиÑатьÑÑ Ð½Ð° комментарии"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "значок ленты"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "лента в формате Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Ð’Ñе права Ñохранены"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Более новые"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Более Ñтарые →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Перейти к Ñтранице:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "более новые"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "более Ñтарые"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Ðа карте"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Метки"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Ðе удалоÑÑŒ прочитать файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Ой!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Произошла ошибка"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Ðеверный запроÑ"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ðº Ñерверу некорректен, пожалуйÑта, перепроверьте его"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ позволÑетÑÑ"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+"Похоже, по Ñтому адреÑу нет Ñтраницы. Сожалеем!</p><p>Возможно, иÑÐºÐ¾Ð¼Ð°Ñ Ð²Ð°Ð¼Ð¸ "
+"Ñтраница была удалена или переехала."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "год"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "меÑÑц"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "неделÑ"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "день"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "чаÑ"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "мин"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Комментировать"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+"Ð’Ñ‹ можете иÑпользовать <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> в качеÑтве Ñзыка разметки."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Я уверен, что хочу иÑключить Ñтот файл из коллекции"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "КоллекциÑ"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Выберите --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Примечание"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+"Ð’Ñ‹ можете иÑпользовать\n"
+"<a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+"Markdown</a> в качеÑтве Ñзыка разметки."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr "Причина жалобы"
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "Сожалеем: возможноÑть ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Ой, ваш комментарий был пуÑÑ‚."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Ваш комментарий размещён!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "ПожалуйÑта, проверьте введённое и попробуйте ещё раз."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Ðеобходимо выбрать или добавить коллекцию"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" — уже в коллекции \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" добавлено в коллекцию \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Вы удалили файл."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Ð’Ñ‹ на пороге ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° другого пользователÑ. Будьте оÑторожны."
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Ð’Ñ‹ иÑключили файл из коллекции."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "Файл не иÑключён из коллекции, так как вы не подтвердили Ñвоё намерение отметкой."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+"Ð’Ñ‹ пытаетеÑÑŒ удалить файл из коллекции другого пользователÑ. Будьте "
+"оÑторожны."
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Вы удалили коллекцию \"%s\""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð½Ðµ удалена, так как вы не подтвердили Ñвоё намерение отметкой."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Ð’Ñ‹ пытаетеÑÑŒ удалить коллекцию другого пользователÑ. Будьте оÑторожны."
diff --git a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 51b57ef0..00000000
--- a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
deleted file mode 100644
index 81fee12b..00000000
--- a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
+++ /dev/null
@@ -1,1852 +0,0 @@
-# Translations template for PROJECT.
-# Copyright (C) 2013 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
-# martin, 2013
-# martin, 2012-2014
-# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012
-# Olle Jonsson <olle.jonsson@gmail.com>, 2012
-# Tanja Trudslev <tanja.trudslev@gmail.com>, 2012
-# martin, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-12-03 13:23-0600\n"
-"PO-Revision-Date: 2014-01-09 18:22+0000\n"
-"Last-Translator: martin\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/mediagoblin/language/sk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6\n"
-"Language: sk\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
-msgid "Sorry, registration is disabled on this instance."
-msgstr "PrepáÄ, registrácia na danej inÅ¡tancii nie je povolená."
-
-#: mediagoblin/decorators.py:315
-msgid "Sorry, reporting is disabled on this instance."
-msgstr "PrepáÄ, reportovanie je na tejto inÅ¡tancii vypnuté."
-
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
-msgid "Sorry, authentication is disabled on this instance."
-msgstr "PrepáÄ, autentifikácia je vypnutá pre túto inÅ¡tanciu."
-
-#: mediagoblin/auth/tools.py:43
-msgid "Invalid User name or email address."
-msgstr "Nesprávne používateľské meno alebo e-mailová adresa."
-
-#: mediagoblin/auth/tools.py:44
-msgid "This field does not take email addresses."
-msgstr "Toto pole neakceptuje e-mailové adresy."
-
-#: mediagoblin/auth/tools.py:45
-msgid "This field requires an email address."
-msgstr "Toto pole vyžaduje e-mailovú adresu."
-
-#: mediagoblin/auth/tools.py:116
-msgid "Sorry, a user with that name already exists."
-msgstr "PrepáÄ, rovnaké používateľské meno už existuje."
-
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:402
-msgid "Sorry, a user with that email address already exists."
-msgstr "PrepáÄ, rovnaká e-mailová adresa už bola použitá na vytvorenie úÄtu."
-
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:358
-#: mediagoblin/edit/views.py:379 mediagoblin/plugins/basic_auth/views.py:110
-msgid "The verification key or user id is incorrect."
-msgstr "VerifikaÄný kÄ¾ÃºÄ alebo používateľské ID nie je správne."
-
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
-msgstr "Tvoja e-mailová adresa bola overená. Teraz sa môžeš prihlásiť, upravovať profil a vkladať výtvory!"
-
-#: mediagoblin/auth/views.py:167
-msgid "The verification key or user id is incorrect"
-msgstr "Overovací kľúÄ, prípadne používateľské meno je nesprávne."
-
-#: mediagoblin/auth/views.py:185
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Je potrebné prihlásiť sa, aby sme vedeli kam máme e-mail zaslať!"
-
-#: mediagoblin/auth/views.py:193
-msgid "You've already verified your email address!"
-msgstr "Už máš overenú e-mailovú adresu!"
-
-#: mediagoblin/auth/views.py:203
-msgid "Resent your verification email."
-msgstr "Opätovne zaslať overovací e-mail."
-
-#: mediagoblin/edit/forms.py:27 mediagoblin/edit/forms.py:87
-#: mediagoblin/submit/forms.py:37 mediagoblin/submit/forms.py:61
-#: mediagoblin/user_pages/forms.py:45
-msgid "Title"
-msgstr "Titulok"
-
-#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:40
-msgid "Description of this work"
-msgstr "Popis výtvoru"
-
-#: mediagoblin/edit/forms.py:31 mediagoblin/edit/forms.py:54
-#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr "Môžeš využiť\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> pre formátovanie príspevku."
-
-#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:45
-msgid "Tags"
-msgstr "Štítky"
-
-#: mediagoblin/edit/forms.py:37 mediagoblin/submit/forms.py:47
-msgid "Separate tags by commas."
-msgstr "Oddeľ Å¡títky pomocou Äiarky."
-
-#: mediagoblin/edit/forms.py:40 mediagoblin/edit/forms.py:95
-msgid "Slug"
-msgstr "Unikátna ÄasÅ¥ adresy"
-
-#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:96
-msgid "The slug can't be empty"
-msgstr "Unikátna ÄasÅ¥ adresy nesmie byÅ¥ prázdna"
-
-#: mediagoblin/edit/forms.py:42
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
-msgstr "Titulná ÄasÅ¥ adresy daného média. Zmena poľa nepovinná."
-
-#: mediagoblin/edit/forms.py:46 mediagoblin/submit/forms.py:50
-#: mediagoblin/templates/mediagoblin/utils/license.html:20
-msgid "License"
-msgstr "Licencia"
-
-#: mediagoblin/edit/forms.py:52
-msgid "Bio"
-msgstr "Bio"
-
-#: mediagoblin/edit/forms.py:58
-msgid "Website"
-msgstr "Webstránka"
-
-#: mediagoblin/edit/forms.py:60
-msgid "This address contains errors"
-msgstr "Daná adresa obsahuje chybu"
-
-#: mediagoblin/edit/forms.py:65
-msgid "Email me when others comment on my media"
-msgstr "ZaÅ¡li mi e-mail keÄ ostatní okomentujú môj výtvor"
-
-#: mediagoblin/edit/forms.py:67
-msgid "Enable insite notifications about events."
-msgstr "Povoliť notifikácie ohľadom udalostí na stránke."
-
-#: mediagoblin/edit/forms.py:69
-msgid "License preference"
-msgstr "Preferencia licencie"
-
-#: mediagoblin/edit/forms.py:75
-msgid "This will be your default license on upload forms."
-msgstr "Nasledovná licencia bude použitá ako východzia pre všetky tvoje výtvory."
-
-#: mediagoblin/edit/forms.py:88
-msgid "The title can't be empty"
-msgstr "Titulok nesmie byť prázdny."
-
-#: mediagoblin/edit/forms.py:90 mediagoblin/submit/forms.py:64
-#: mediagoblin/user_pages/forms.py:48
-msgid "Description of this collection"
-msgstr "Popis danej kolekcie"
-
-#: mediagoblin/edit/forms.py:97
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
-msgstr "Titulná ÄasÅ¥ adresy danej kolekcie. Zmena poľa nepovinná."
-
-#: mediagoblin/edit/forms.py:104 mediagoblin/plugins/basic_auth/forms.py:68
-msgid "Old password"
-msgstr "Staré heslo"
-
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:70
-msgid "Enter your old password to prove you own this account."
-msgstr "Vlož svoje staré heslo na dôkaz toho, že vlastníš daný úÄet."
-
-#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:73
-msgid "New password"
-msgstr "Nové heslo"
-
-#: mediagoblin/edit/forms.py:117
-msgid "New email address"
-msgstr "Nová e-mailová adresa"
-
-#: mediagoblin/edit/forms.py:121 mediagoblin/plugins/basic_auth/forms.py:28
-#: mediagoblin/plugins/basic_auth/forms.py:43
-#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:110
-msgid "Password"
-msgstr "Heslo"
-
-#: mediagoblin/edit/forms.py:123
-msgid "Enter your password to prove you own this account."
-msgstr "Vlož svoje heslo pre overenie pravosti úÄtu."
-
-#: mediagoblin/edit/views.py:73
-msgid "An entry with that slug already exists for this user."
-msgstr "Položku s rovnakou unikátnou ÄasÅ¥ou adresy už niekde máš."
-
-#: mediagoblin/edit/views.py:91
-msgid "You are editing another user's media. Proceed with caution."
-msgstr "Upravuješ výtvory iného používateľa. Pristupuj zodpovedne. "
-
-#: mediagoblin/edit/views.py:161
-#, python-format
-msgid "You added the attachment %s!"
-msgstr "Príloha %s pridaná!"
-
-#: mediagoblin/edit/views.py:188
-msgid "You can only edit your own profile."
-msgstr "Môžeš upravovať iba svoj vlastný profil."
-
-#: mediagoblin/edit/views.py:194
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Upravuješ profil iného používateľa. Pristupuj zodpovedne. "
-
-#: mediagoblin/edit/views.py:210
-msgid "Profile changes saved"
-msgstr "Zmeny v profile uložené"
-
-#: mediagoblin/edit/views.py:243
-msgid "Account settings saved"
-msgstr "Nastavenia úÄtu uložené"
-
-#: mediagoblin/edit/views.py:277
-msgid "You need to confirm the deletion of your account."
-msgstr "PotrebujeÅ¡ potvrdiÅ¥ odstránenie svojho úÄtu."
-
-#: mediagoblin/edit/views.py:313 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:242
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "Už máš kolekciu nazvanú ako \"%s\"!"
-
-#: mediagoblin/edit/views.py:317
-msgid "A collection with that slug already exists for this user."
-msgstr "Kolekcia s týmto štítkom už máš."
-
-#: mediagoblin/edit/views.py:332
-msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Upravuješ kolekciu iného používateľa. Pristupuj zodpovedne. "
-
-#: mediagoblin/edit/views.py:373
-msgid "Your email address has been verified."
-msgstr "Tvoja e-mailová adresa bola verifikovaná."
-
-#: mediagoblin/edit/views.py:408 mediagoblin/plugins/basic_auth/views.py:200
-msgid "Wrong password"
-msgstr "Nesprávne heslo"
-
-#: mediagoblin/gmg_commands/assetlink.py:60
-msgid "Cannot link theme... no theme set\n"
-msgstr "Nemožno pripojiť tému... téma nenastavená\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:73
-msgid "No asset directory for this theme\n"
-msgstr "Žiadny prieÄinok položiek pre túto tému\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:76
-msgid "However, old link directory symlink found; removed.\n"
-msgstr "Odstránené; hoci bol pôvodný symbolický odkaz adresára nájdený.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:112
-#, python-format
-msgid "Could not link \"%s\": %s exists and is not a symlink\n"
-msgstr "Nemožno odkazovať na \"%s\": %s existuje a nie je symbolickým odkazom\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:119
-#, python-format
-msgid "Skipping \"%s\"; already set up.\n"
-msgstr "Preskakujem \"%s\"; opakovane nastavené.\n"
-
-#: mediagoblin/gmg_commands/assetlink.py:124
-#, python-format
-msgid "Old link found for \"%s\"; removing.\n"
-msgstr "Nájdený starý odkaz pre \"%s\"; odstraňujem.\n"
-
-#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "CSRF \"cookie\" neprítomný. Toto vidíš najskôr ako výsledok blokovania \"cookie\" súborov a pod.<br/>Uisti sa, že máš povolené ukladanie \"cookies\" pre danú doménu."
-
-#: mediagoblin/media_types/__init__.py:78
-#: mediagoblin/media_types/__init__.py:100
-msgid "Sorry, I don't support that file type :("
-msgstr "PrepáÄ, nepodporujem tento typ súborov =("
-
-#: mediagoblin/media_types/pdf/processing.py:142
-msgid "unoconv failing to run, check log file"
-msgstr "beh unoconv zlyhal, preskúmajte log záznam"
-
-#: mediagoblin/media_types/video/processing.py:44
-msgid "Video transcoding failed"
-msgstr "Konvertovanie videa zlyhalo"
-
-#: mediagoblin/moderation/forms.py:21
-msgid "Take away privilege"
-msgstr "Odobrať privilégiá"
-
-#: mediagoblin/moderation/forms.py:22
-msgid "Ban the user"
-msgstr "Udeliť používateľovi BAN"
-
-#: mediagoblin/moderation/forms.py:23
-msgid "Send the user a message"
-msgstr ""
-
-#: mediagoblin/moderation/forms.py:24
-msgid "Delete the content"
-msgstr "Odstrániť obsah"
-
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
-msgid "User will be banned until:"
-msgstr "BAN používateľa potrvá do:"
-
-#: mediagoblin/moderation/forms.py:57
-msgid "Why are you banning this User?"
-msgstr "PreÄo chceÅ¡ udeliÅ¥ BAN tomuto používateľovi?"
-
-#: mediagoblin/moderation/forms.py:109
-msgid "What action will you take to resolve the report?"
-msgstr "Čo spravíš pre vyriešenie daného reportu?"
-
-#: mediagoblin/moderation/forms.py:115
-msgid "What privileges will you take away?"
-msgstr ""
-
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
-msgstr ""
-
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
-msgid "commented on your post"
-msgstr "okmentoval tvoj príspevok"
-
-#: mediagoblin/notifications/views.py:35
-#, python-format
-msgid "Subscribed to comments on %s!"
-msgstr "Úspešný zápis odberu komentárov pre %s!"
-
-#: mediagoblin/notifications/views.py:48
-#, python-format
-msgid "You will not receive notifications for comments on %s."
-msgstr "Nebudeš dostávať notifikácie ohľadom komentárov pre %s."
-
-#: mediagoblin/oauth/views.py:239
-msgid "Must provide an oauth_token."
-msgstr "Nutnosť poskytnúť OAuth token."
-
-#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:294
-msgid "No request token found."
-msgstr "Požadovaný token nenájdený."
-
-#: mediagoblin/plugins/api/views.py:75 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
-msgid "Sorry, the file size is too big."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
-msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/api/views.py:82 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
-msgid "Sorry, you have reached your upload limit."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
-#: mediagoblin/plugins/persona/forms.py:24
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
-msgid "Username"
-msgstr "Používateľské meno"
-
-#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
-#: mediagoblin/plugins/persona/forms.py:28
-#: mediagoblin/plugins/persona/forms.py:39
-msgid "Email address"
-msgstr "Email adresse"
-
-#: mediagoblin/plugins/basic_auth/forms.py:39
-msgid "Username or Email"
-msgstr "Použivateľské meno alebo e-mail"
-
-#: mediagoblin/plugins/basic_auth/forms.py:46
-msgid "Stay logged in"
-msgstr "Zostať prihlásený"
-
-#: mediagoblin/plugins/basic_auth/forms.py:51
-msgid "Username or email"
-msgstr "Používateľské meno alebo e-mailová adresa"
-
-#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Pokiaľ daná e-mailová adresa (citlivá na veľkosť písma!) je registrovaná, e-mail z inštrukciami pre zmenu tvojho hesla bol zaslaný."
-
-#: mediagoblin/plugins/basic_auth/views.py:65
-msgid "Couldn't find someone with that username."
-msgstr "Nemožno nájsť nikoho z daným používateľským menom."
-
-#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
-msgstr "E-mailová správa z inštrukciami na zmenu tvojho hesla bola zaslaná."
-
-#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
-msgstr "Nebolo možné zaslať e-mail na opätovné získanie zabudnutého hesla, nakoľko tvoje používateľské meno je neaktívne, prípadne e-mailová adresa nebola úspešne overená."
-
-#: mediagoblin/plugins/basic_auth/views.py:123
-msgid "The user id is incorrect."
-msgstr "Používateľské ID nie je správne."
-
-#: mediagoblin/plugins/basic_auth/views.py:139
-msgid "You can now log in using your new password."
-msgstr "Už môžeš použiť nové heslo pri prihlasovaní."
-
-#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/views.py:215
-msgid "Your password was changed successfully"
-msgstr "Tvoje heslo bolo úspešne zmenené"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
-msgid "Set your new password"
-msgstr "Nastav svoje nové heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
-msgid "Set password"
-msgstr "Nastav heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
-#, python-format
-msgid "Changing %(username)s's password"
-msgstr "Mením heslo používateľa %(username)s"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
-msgid "Save"
-msgstr "Uložiť"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
-msgid "Don't have an account yet?"
-msgstr "EÅ¡te stále nemáš úÄet?"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
-msgid "Create one here!"
-msgstr "Vytvor si jeden tu!"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
-msgid "Change your password."
-msgstr ""
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
-msgid "Recover password"
-msgstr "Obnoviť heslo"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
-msgid "Send instructions"
-msgstr "Zaslať inštrukcie"
-
-#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
-msgid "Forgot your password?"
-msgstr "Zabudnuté heslo?"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Poloha"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Zobraziť na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
-#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
-msgid "Sign in to create an account!"
-msgstr "Prihlás sa pre vytvorenie úÄtu!"
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Povoliť"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Zakázať"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Meno"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "Meno v rámci OAuth klienta"
-
-#: mediagoblin/plugins/oauth/forms.py:36
-msgid "Description"
-msgstr "Popis"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Toto bude viditeľné pre používateľov,\n ktorí sa môžu identifikovať cez tvoju aplikáciu."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Typ"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Dôverné</strong> - Klient môže\nvytváraÅ¥ požiadavky na inÅ¡tanciu GNU MediaGoblin, ktoré nemôžu byÅ¥\nzachytené používateľským agentom (napr. klient na strane servera).<br />\n<strong>Verejné</strong> - Klient nemôže vytváraÅ¥ dôverné\npožiadavky voÄi GNU MediaGoblin inÅ¡tancii (napr. JavaScript-ový klient\n na klientskej strane)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "Presmerovacie URI"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "Presmerovacie URI pre aplikácie, toto pole\nje <strong>požadované</strong> pre verejných klientov."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Dané pole je požadované pre verejných klientov."
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Klient {0} bol registrovaný!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "OAuth klientské spojenia"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Tvoji autorizovaní OAuth klienti"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
-msgid "Add"
-msgstr "Pridať"
-
-#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
-msgid "Sorry, an account is already registered to that OpenID."
-msgstr "PrepáÄ, úÄet pre dané OpenID už existuje."
-
-#: mediagoblin/plugins/openid/forms.py:38
-msgid "OpenID"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/views.py:48
-msgid "Sorry, the OpenID server could not be found"
-msgstr "PrepáÄ, OpenID server nebol nájdený"
-
-#: mediagoblin/plugins/openid/views.py:61
-#, python-format
-msgid "No OpenID service was found for %s"
-msgstr "Nenájdená žiadna OpenID služba pre %s"
-
-#: mediagoblin/plugins/openid/views.py:106
-#, python-format
-msgid "Verification of %s failed: %s"
-msgstr "Verifikácia %s zlyhala: %s"
-
-#: mediagoblin/plugins/openid/views.py:117
-msgid "Verification cancelled"
-msgstr "Verifikácia zrušená"
-
-#: mediagoblin/plugins/openid/views.py:314
-msgid "Your OpenID url was saved successfully."
-msgstr "URL k tvojmu OpenID úpešne zaznamenaný."
-
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
-msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Nesmieš odstániť svoj jediný OpenID URL, pokým nemáš nastavené heslo"
-
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
-msgid "That OpenID is not registered to this account."
-msgstr "OpenID nie je registrované k tomuto úÄtu."
-
-#: mediagoblin/plugins/openid/views.py:385
-msgid "OpenID was successfully removed."
-msgstr "OpenID úspešne odstránené."
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
-msgid "Add an OpenID"
-msgstr "Pridať OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
-msgid "Delete an OpenID"
-msgstr "Odstrániť OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
-msgid "Delete"
-msgstr "Odstrániť"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
-msgid "OpenID's"
-msgstr "OpenID"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:106
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:47
-msgid "Log in"
-msgstr "Prihlásiť sa"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
-#: mediagoblin/templates/mediagoblin/auth/login.html:39
-msgid "Logging in failed!"
-msgstr "Prihlásenie zlyhalo!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
-msgid "Log in to create an account!"
-msgstr "Prihlás sa pre vytvorenie úÄtu!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
-msgid "Or login with a password!"
-msgstr "Alebo sa prihlás z heslom!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
-msgid "Or login with OpenID!"
-msgstr "Alebo sa prihlás z OpenID!"
-
-#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
-msgid "Or register with OpenID!"
-msgstr "Alebo sa registruj z OpenID!"
-
-#: mediagoblin/plugins/persona/__init__.py:90
-msgid "Sorry, an account is already registered to that Persona email."
-msgstr "PrepáÄ, úÄet na daný Persona e-mail už existuje."
-
-#: mediagoblin/plugins/persona/views.py:138
-msgid "The Persona email address was successfully removed."
-msgstr "E-mailová adresa Persona úspešne odstránená."
-
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
-msgstr "Nesmieš odstrániť svoj jediný Persona e-mail, pokým nie je nastavené heslo."
-
-#: mediagoblin/plugins/persona/views.py:149
-msgid "That Persona email address is not registered to this account."
-msgstr "Persona e-mail nie je registrovaný k tomuto úÄtu."
-
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
-msgstr "PrepáÄ, úÄet z danou Persona e-mailovou adresou už existuje."
-
-#: mediagoblin/plugins/persona/views.py:192
-msgid "Your Persona email address was saved successfully."
-msgstr "Tvoj Persona e-mail úspešne uložený."
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
-msgid "Delete a Persona email address"
-msgstr "Odstrániť Persona e-mail"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
-msgid "Add a Persona email address"
-msgstr "Pridať Persona e-mail"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
-msgid "Persona's"
-msgstr ""
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
-msgid "Or login with Persona!"
-msgstr "Alebo sa prihlás z Persona!"
-
-#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
-msgid "Or register with Persona!"
-msgstr "Alebo sa registruj z Persona!"
-
-#: mediagoblin/processing/__init__.py:420
-msgid "Invalid file given for media type."
-msgstr "Nesprávny typ súboru pre dané médium."
-
-#: mediagoblin/processing/__init__.py:427
-msgid "Copying to public storage failed."
-msgstr "Kopírovanie na verejný úložný priestor zlyhalo."
-
-#: mediagoblin/processing/__init__.py:435
-msgid "An acceptable processing file was not found"
-msgstr "Prijateľný spracúvavaný súbor nenájdený"
-
-#: mediagoblin/submit/forms.py:30
-msgid "Max file size: {0} mb"
-msgstr ""
-
-#: mediagoblin/submit/forms.py:34
-msgid "File"
-msgstr "Súbor"
-
-#: mediagoblin/submit/forms.py:41
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
-" Markdown</a> for formatting."
-msgstr ""
-
-#: mediagoblin/submit/views.py:55
-msgid "You must provide a file."
-msgstr "Musíš poskytnúť súbor."
-
-#: mediagoblin/submit/views.py:69
-msgid "Woohoo! Submitted!"
-msgstr "Skvelé! Pridané!"
-
-#: mediagoblin/submit/views.py:138
-#, python-format
-msgid "Collection \"%s\" added!"
-msgstr "Kolekcia \"%s\" pridaná!"
-
-#: mediagoblin/templates/mediagoblin/banned.html:20
-msgid "You are Banned."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:24
-#: mediagoblin/templates/mediagoblin/error.html:24
-msgid "Image of goblin stressing out"
-msgstr "Obrázok hysterického goblina"
-
-#: mediagoblin/templates/mediagoblin/banned.html:26
-msgid "You have been banned"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:28
-#, python-format
-msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "nekoneÄne"
-
-#: mediagoblin/templates/mediagoblin/base.html:81
-msgid "Verify your email!"
-msgstr "Over si e-mailovú adresu!"
-
-#: mediagoblin/templates/mediagoblin/base.html:88
-#: mediagoblin/templates/mediagoblin/base.html:96
-msgid "log out"
-msgstr "odhlásiť sa"
-
-#: mediagoblin/templates/mediagoblin/base.html:115
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr "ÚÄet používateľa <a href=\"%(user_url)s\">%(user_name)s</a>"
-
-#: mediagoblin/templates/mediagoblin/base.html:122
-msgid "Change account settings"
-msgstr "ZmeniÅ¥ nastavenia úÄtu"
-
-#: mediagoblin/templates/mediagoblin/base.html:126
-#: mediagoblin/templates/mediagoblin/base.html:147
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Sekcia spracovania výtvorov"
-
-#: mediagoblin/templates/mediagoblin/base.html:135
-msgid "Log out"
-msgstr "Odhlásiť sa"
-
-#: mediagoblin/templates/mediagoblin/base.html:138
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:112
-msgid "Add media"
-msgstr "Pridať výtvor"
-
-#: mediagoblin/templates/mediagoblin/base.html:141
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
-msgid "Create new collection"
-msgstr "Vytvoriť novú kolekciu"
-
-#: mediagoblin/templates/mediagoblin/base.html:151
-msgid "User management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:155
-msgid "Report management panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid "Most recent media"
-msgstr "Aktuálne výtvory"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:21
-msgid "Authorization"
-msgstr "Autorizácia"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:26
-#: mediagoblin/templates/mediagoblin/api/authorize.html:53
-msgid "Authorize"
-msgstr "Autorizovať"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:29
-msgid "You are logged in as"
-msgstr "Si prihlásený/á ako"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:33
-msgid "Do you want to authorize "
-msgstr "Chceš sa autorizovať"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:37
-msgid "an unknown application"
-msgstr "v neznámej aplikácii"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:39
-msgid " to access your account? "
-msgstr "pre prístup k svojmu úÄtu?"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:41
-msgid "Applications with access to your account can: "
-msgstr "Aplikácie z prístupom k tvojmu úÄtu môžu:"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:43
-msgid "Post new media as you"
-msgstr "Zaslať nové výtvory ako ty"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:44
-msgid "See your information (e.g profile, media, etc...)"
-msgstr "PrezrieÅ¥ vlastné info (napr. profil, výtvory atÄ.)"
-
-#: mediagoblin/templates/mediagoblin/api/authorize.html:45
-msgid "Change your information"
-msgstr "Zmeniť tvoje údaje"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:21
-msgid "Authorization Finished"
-msgstr "Autorizácia dokonÄená"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:26
-msgid "Authorization Complete"
-msgstr "Autorizácia kompletná"
-
-#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Toto kopíruj a vlož do svojho klienta:"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:28
-#: mediagoblin/templates/mediagoblin/auth/register.html:36
-msgid "Create an account!"
-msgstr "Opret en konto!"
-
-#: mediagoblin/templates/mediagoblin/auth/register.html:41
-msgid "Create"
-msgstr "Vytvoriť"
-
-#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"\n"
-"to activate your GNU MediaGoblin account, open the following URL in\n"
-"your web browser:\n"
-"\n"
-"%(verification_url)s"
-msgstr "Ahoj %(username)s,\n\npre aktiváciu tvojho GNU MediaGoblin úÄtu, otvor nasledujúci odkaz vo\nsvojom prehliadaÄi:\n\n%(verification_url)s"
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
-#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Poháňa nás <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, súÄasÅ¥ projektu <a href=\"http://gnu.org/\">GNU</a>."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
-#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
-msgstr "Uvoľnené pod <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Zdrojový kód</a> plne dostupný."
-
-#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
-msgid "Terms of Service"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
-msgid "Explore"
-msgstr "Preskúmať"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:23
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Táto stránka používa <a href=\"http://mediagoblin.org\">MediaGoblin</a>, výnimoÄne skvelý kus softvéru na hostovanie médií."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:26
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Pre pridanie vlastných výtvorov, komentárov a viac.. sa prihlás zo svojim MediaGoblin úÄtom."
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:28
-msgid "Don't have one yet? It's easy!"
-msgstr "Har du ikke en endnu? Det er let!"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:35
-msgid ""
-"\n"
-" >Create an account at this site</a>\n"
-" or"
-msgstr "\n >VytvoriÅ¥ úÄet na tejto stránke</a>\n alebo"
-
-#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:41
-msgid ""
-"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
-msgstr "\n <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Založiť MediaGoblin na vlastnom serveri</a>"
-
-#: mediagoblin/templates/mediagoblin/bits/logo.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
-#, python-format
-msgid "Editing attachments for %(media_title)s"
-msgstr "Úprava príloh pre %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:191
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:207
-msgid "Attachments"
-msgstr "Prílohy"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:213
-msgid "Add attachment"
-msgstr "Pridať prílohu"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit.html:41
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
-msgid "Cancel"
-msgstr "Zrušiť"
-
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
-msgid "Save changes"
-msgstr "Uložiť zmeny"
-
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
-#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
-#, python-format
-msgid "Changing %(username)s's email"
-msgstr "Zmena e-mailu používateľa %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
-#, python-format
-msgid "Really delete user '%(user_name)s' and all related media/comments?"
-msgstr "SkutoÄne odstrániÅ¥ používateľa '%(user_name)s' a vÅ¡etky pridružené výtvory/komentáre?"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
-msgid "Yes, really delete my account"
-msgstr "Ãno, skutoÄne odstrániÅ¥ môj úÄet"
-
-#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Odstráňiť permanentne"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit.html:35
-#, python-format
-msgid "Editing %(media_title)s"
-msgstr "Úprava %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
-#, python-format
-msgid "Changing %(username)s's account settings"
-msgstr "Mením nastavenia úÄtu používateľa %(username)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
-msgid "Delete my account"
-msgstr "OdstrániÅ¥ môj úÄet"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
-msgid "Email"
-msgstr "E-mail"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
-#, python-format
-msgid "Editing %(collection_title)s"
-msgstr "Úprava %(collection_title)s"
-
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
-#, python-format
-msgid "Editing %(username)s's profile"
-msgstr "Úprava profilu, ktorý vlastní %(username)s "
-
-#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
-#, python-format
-msgid ""
-"Hi,\n"
-"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
-"please follow the link below to verify your new email address.\n"
-"\n"
-"%(verification_url)s\n"
-"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
-"this email."
-msgstr "Ahoj,\n\nChceli sme sa uisiť, že práve ty si %(username)s. Pokiaľ je tak, nasleduj\nprosím odkaz nižšie pre verifikáciu svojej novej e-mailovej adresy.\n\n%(verification_url)s\n\nPokiaľ nie si %(username)s alebo nebola zmena e-mailu žiadaná tebou,\npokojne túto správu ignoruj."
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
-msgid "New comments"
-msgstr "Nové komentáre"
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:55
-#: mediagoblin/templates/mediagoblin/moderation/report.html:117
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:139
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:168
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "pred %(formatted_time)s "
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
-msgid "Mark all read"
-msgstr "OznaÄiÅ¥ ako preÄítané"
-
-#: mediagoblin/templates/mediagoblin/listings/collection.html:30
-#: mediagoblin/templates/mediagoblin/listings/collection.html:35
-#: mediagoblin/templates/mediagoblin/listings/tag.html:30
-#: mediagoblin/templates/mediagoblin/listings/tag.html:35
-#, python-format
-msgid "Media tagged with: %(tag_name)s"
-msgstr "Výtvory oznaÄené ako: %(tag_name)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
-msgid "Download"
-msgstr "Stiahnuť"
-
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-msgid "Original"
-msgstr "Originál"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
-msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "PrepáÄ, tento zvukový súbor nepôjde prehraÅ¥, \n\tnakoľko tvoj prehliadaÄ nepodporuje HTML5 \n\taudio."
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
-msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "MôžeÅ¡ získaÅ¥ moderný prehliadaÄ, ktorý\n\ttento zvuk hravo prehrá <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
-msgid "Original file"
-msgstr "Originálny súbor"
-
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
-msgid "WebM file (Vorbis codec)"
-msgstr "WebM súbor (Vorbis kodek)"
-
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
-msgid "Created"
-msgstr "Vytvorené"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Obrázok pre %(media_title)s"
-
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
-msgid "PDF file"
-msgstr "PDF súbor"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
-msgid "Perspective"
-msgstr "Perspektíva"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:115
-msgid "Front"
-msgstr "ÄŒelo"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:118
-msgid "Top"
-msgstr "Vrch"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
-msgid "Side"
-msgstr "Strana"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
-msgid "WebGL"
-msgstr "WebGL"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:132
-msgid "Download model"
-msgstr "Stiahnuť model"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:140
-msgid "File Format"
-msgstr "Súborový formát"
-
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:142
-msgid "Object Height"
-msgstr "Výška objektu"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
-msgid ""
-"Sorry, this video will not work because\n"
-" your web browser does not support HTML5 \n"
-" video."
-msgstr "PrepáÄ, tento video súbor nepôjde prehraÅ¥, \n\tnakoľko tvoj prehliadaÄ nepodporuje HTML5 \n\tvideo."
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
-msgid ""
-"You can get a modern web browser that \n"
-" can play this video at <a href=\"http://getfirefox.com\">\n"
-" http://getfirefox.com</a>!"
-msgstr "MôžeÅ¡ získaÅ¥ moderný prehliadaÄ, ktorý\n\ttento video súbor hravo prehrá na <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
-msgid "WebM file (VP8/Vorbis)"
-msgstr "WebM súbor (VP8/Vorbis)"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
-msgstr "Tu môžeš sledovať stav médií spracovávaných na danej inštancii."
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
-msgid "Media in-processing"
-msgstr "Výtvory sa spracúvajú"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
-msgid "No media in-processing"
-msgstr "Žiadne výtvory v procese spracovania"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
-msgid "These uploads failed to process:"
-msgstr "Nasledovné nahratia neprešli spracovaním:"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
-msgid "No failed entries!"
-msgstr "Žiadne zlyhané položky!"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
-msgid "Last 10 successful uploads"
-msgstr "Posledných 10 úspešných nahratí"
-
-#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
-msgid "No processed entries, yet!"
-msgstr "Zatiaľ žiadne spracované položky!"
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:27
-msgid "Sorry, no such report found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:32
-msgid "Return to Reports Panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:33
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:155
-msgid "Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:36
-msgid "Reported comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:81
-#, python-format
-msgid ""
-"\n"
-" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:90
-#, python-format
-msgid ""
-"\n"
-" CONTENT BY\n"
-" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
-" HAS BEEN DELETED\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:130
-msgid "Resolve"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:134
-#: mediagoblin/templates/mediagoblin/moderation/report.html:153
-msgid "Resolve This Report"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:145
-msgid "Status"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:147
-msgid "RESOLVED"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report.html:155
-msgid "You cannot take action against an administrator"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
-msgid "Report panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
-msgid ""
-"\n"
-" Here you can look up open reports that have been filed by users.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
-msgid "Active Reports Filed"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:171
-msgid "Offender"
-msgstr "Vinník"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
-msgid "When Reported"
-msgstr "Čas nahlásenia"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
-msgid "Reported By"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
-msgid "Reason"
-msgstr "Dôvod"
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:94
-#, python-format
-msgid ""
-"\n"
-" Comment Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:109
-#, python-format
-msgid ""
-"\n"
-" Media Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:123
-msgid "No open reports found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
-msgid "Closed Reports"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:170
-msgid "Resolved"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
-msgid "Action Taken"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:185
-#, python-format
-msgid ""
-"\n"
-" Closed Report #%(report_id)s\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:199
-msgid "No closed reports found."
-msgstr "Žiadne vyriešené nahlásenia."
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
-msgid "User panel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
-msgid ""
-"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
-msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
-msgid "When Joined"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
-msgid "# of Comments Posted"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
-msgid "No users found."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:26
-msgid "Add a collection"
-msgstr "Pridať kolekciu"
-
-#: mediagoblin/templates/mediagoblin/submit/start.html:28
-#: mediagoblin/templates/mediagoblin/submit/start.html:35
-msgid "Add your media"
-msgstr "Pridaj svoj výtvor"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
-#, python-format
-msgid "%(collection_title)s (%(username)s's collection)"
-msgstr "%(collection_title)s (kolekcia používateľa %(username)s) "
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
-#, python-format
-msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "%(collection_title)s od <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
-msgid "Edit"
-msgstr "Upraviť"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
-#, python-format
-msgid "Really delete %(title)s?"
-msgstr "SkutoÄne odstrániÅ¥ %(title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
-#, python-format
-msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "SkutoÄne odstrániÅ¥ %(media_title)s z %(collection_title)s?"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
-msgid "Remove"
-msgstr "Odstrániť"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
-#, python-format
-msgid "%(username)s's collections"
-msgstr "Kolekcie používateľa %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
-msgstr "Kolekcie používateľa <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
-#, python-format
-msgid ""
-"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Ahoj %(username)s,\npoužívateľ %(comment_author)s okmentoval tvoj príspevok (%(comment_url)s) na %(instance_name)s\n"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
-#, python-format
-msgid "%(username)s's media"
-msgstr "Výtvory, ktoré vlastní %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
-#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
-msgstr "Výtvory používateľa <a href=\"%(user_url)s\">%(username)s</a> zo štítkom <a href=\"%(tag_url)s\">%(tag)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Výtvory, ktoré vlastní <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
-#, python-format
-msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■Prehliadanie výtvorov od <a href=\"%(user_url)s\">%(username)s</a>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:97
-msgid "Add a comment"
-msgstr "Pridať komentár"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:108
-msgid "Add this comment"
-msgstr "Pridať tento komentár"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:112
-msgid "Comment Preview"
-msgstr "Náhľad komentára"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:166
-msgid "Added"
-msgstr "Pridané"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
-#, python-format
-msgid "Add “%(media_title)s†to a collection"
-msgstr "Pridať “%(media_title)s†do kolekcie"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
-msgid "+"
-msgstr "+"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
-msgid "Add a new collection"
-msgstr "Pridať novú kolekciu"
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
-msgstr "Tu môžeš sledovať priebeh spracovania výtvorov pre svoju galériu."
-
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
-msgid "Your last 10 successful uploads"
-msgstr "Tvojich 10 posledných úspešných nahratí"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
-msgid "<h2>File a Report</h2>"
-msgstr "<h2>Nahlásiť</h2>"
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
-msgid "Reporting this Comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
-msgid "Reporting this Media Entry"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
-#, python-format
-msgid ""
-"\n"
-" â– Published by <a href=\"%(user_url)s\"\n"
-" class=\"comment_authorlink\">%(username)s</a>\n"
-" "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
-msgid "File Report "
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
-#, python-format
-msgid "%(username)s's profile"
-msgstr "Profil, ktorý vlastní %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
-msgid "Here's a spot to tell others about yourself."
-msgstr "Na tomto mieste môžeš povedať o sebe ostatným."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
-msgid "Edit profile"
-msgstr "Upraviť profil"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:61
-msgid "This user hasn't filled in their profile (yet)."
-msgstr "DotyÄný používateľ (zatiaľ) nevyplnil svoj profil."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:80
-msgid "Browse collections"
-msgstr "Prehliadať kolekcie"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:93
-#, python-format
-msgid "View all of %(username)s's media"
-msgstr "Zobraziť všetky výtvory, ktoré vlastní %(username)s"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
-msgstr "VÅ¡etky tvoje výtvory sa objavia práve tu, zatiaľ vÅ¡ak nemáš niÄ pridané."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
-msgid "There doesn't seem to be any media here yet..."
-msgstr "Pravdepodobne sa tu nenachádzajú žiadne výtvory..."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
-msgid "Email verification needed"
-msgstr "Nutné overenie e-mailovej adresy"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
-msgid "Almost done! Your account still needs to be activated."
-msgstr "Takmer hotovo! EÅ¡te je potrebné aktivovaÅ¥ tvoj úÄet."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
-msgstr "E-mail z inštrukciami ako na to by ti mal doraziť každú chvíľu."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
-msgid "In case it doesn't:"
-msgstr "V prípade, že nie:"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
-msgid "Resend verification email"
-msgstr "Opätovne zaslať overovací e-mail."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
-msgstr "ÚÄet s týmto používateľským menom je už registrovaný, avÅ¡ak eÅ¡te stále neaktívny."
-
-#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
-#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
-msgstr "Pokiaľ si to ty, ale už nemáš uloženú kópiu overovacej správy, tak sa môžeš <a href=\"%(login_url)s\">prihlásiť</a> a preposlať si ju."
-
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
-msgid "(remove)"
-msgstr "(odstrániť)"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:21
-msgid "Collected in"
-msgstr "Zahrnuté"
-
-#: mediagoblin/templates/mediagoblin/utils/collections.html:40
-msgid "Add to a collection"
-msgstr "Pridať do kolekcie"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
-msgid "feed icon"
-msgstr "ikona ÄítaÄky"
-
-#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
-#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
-msgid "Atom feed"
-msgstr "Atom ÄítaÄka"
-
-#: mediagoblin/templates/mediagoblin/utils/license.html:25
-msgid "All rights reserved"
-msgstr "Všetky práva vyhradené"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
-msgid "↠Newer"
-msgstr "↠Novšie"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
-msgid "Older →"
-msgstr "Staršie →"
-
-#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
-msgid "Go to page:"
-msgstr "Prejsť na stránku:"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
-msgid "newer"
-msgstr "novšie"
-
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
-#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
-msgid "older"
-msgstr "staršie"
-
-#: mediagoblin/templates/mediagoblin/utils/report.html:25
-msgid "Report media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/tags.html:20
-msgid "Tagged with"
-msgstr "OznaÄené ako"
-
-#: mediagoblin/tools/exif.py:83
-msgid "Could not read the image file."
-msgstr "Nemožno preÄítaÅ¥ súbor obrázka."
-
-#: mediagoblin/tools/response.py:38
-msgid "Oops!"
-msgstr "Hopla!"
-
-#: mediagoblin/tools/response.py:39
-msgid "An error occured"
-msgstr "Vyskytla sa chyba"
-
-#: mediagoblin/tools/response.py:53
-msgid "Bad Request"
-msgstr "Zlá požiadavka"
-
-#: mediagoblin/tools/response.py:55
-msgid "The request sent to the server is invalid, please double check it"
-msgstr "Požiadavka zaslaná na server nie správna, prosím opätovne ju skontroluj"
-
-#: mediagoblin/tools/response.py:63
-msgid "Operation not allowed"
-msgstr "Nepovolená operácia"
-
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
-msgstr "PrepÃ¡Ä ÄŒloveÄe, toto nesmieÅ¡!</p><p>Práve si chcel vykonaÅ¥ funkciu, na ktorú nemáš oprávnenie. Opäť si sa pokúšal odstrániÅ¥ vÅ¡etky používateľské úÄty?"
-
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
-msgstr "Zdá sa, že na tejto adrese sa niÄ nenachádza. PrepáÄ!</p><p>Pokiaľ si si istý, že adresa je správna, možno bola hľadaná stránka presunutá, respektíve odstránená."
-
-#: mediagoblin/tools/timesince.py:62
-msgid "year"
-msgstr "rok"
-
-#: mediagoblin/tools/timesince.py:63
-msgid "month"
-msgstr "mesiac"
-
-#: mediagoblin/tools/timesince.py:64
-msgid "week"
-msgstr "týždeň"
-
-#: mediagoblin/tools/timesince.py:65
-msgid "day"
-msgstr "deň"
-
-#: mediagoblin/tools/timesince.py:66
-msgid "hour"
-msgstr "hodina"
-
-#: mediagoblin/tools/timesince.py:67
-msgid "minute"
-msgstr "minúta"
-
-#: mediagoblin/user_pages/forms.py:23
-msgid "Comment"
-msgstr "Komentár"
-
-#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Smieš používať <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Makrdown</a> pre formátovanie textu."
-
-#: mediagoblin/user_pages/forms.py:31
-msgid "I am sure I want to delete this"
-msgstr "JednoznaÄne to chcem odstrániÅ¥"
-
-#: mediagoblin/user_pages/forms.py:35
-msgid "I am sure I want to remove this item from the collection"
-msgstr "SkutoÄne chcem odstrániÅ¥ danú položku z kolekcie"
-
-#: mediagoblin/user_pages/forms.py:39
-msgid "Collection"
-msgstr "Kolekcia"
-
-#: mediagoblin/user_pages/forms.py:40
-msgid "-- Select --"
-msgstr "-- Vybrať --"
-
-#: mediagoblin/user_pages/forms.py:42
-msgid "Include a note"
-msgstr "Pridať poznámku"
-
-#: mediagoblin/user_pages/forms.py:49
-msgid ""
-"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
-" Markdown</a> for formatting."
-msgstr "Smieš použiť\n<a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\nMarkdown</a> pre formátovanie textu."
-
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
-msgid "Reason for Reporting"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:178
-msgid "Sorry, comments are disabled."
-msgstr "PrepáÄ, komentovanie je vypnuté."
-
-#: mediagoblin/user_pages/views.py:183
-msgid "Oops, your comment was empty."
-msgstr "Hopla, tvoj komentár bol prázdny."
-
-#: mediagoblin/user_pages/views.py:189
-msgid "Your comment has been posted!"
-msgstr "Tvoj komentár bol pridaný!"
-
-#: mediagoblin/user_pages/views.py:225
-msgid "Please check your entries and try again."
-msgstr "Prosím skontroluj svoje položky a skús znova."
-
-#: mediagoblin/user_pages/views.py:265
-msgid "You have to select or add a collection"
-msgstr "Musíš vybrať, prípadne pridať kolekciu"
-
-#: mediagoblin/user_pages/views.py:276
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" sa už nachádza v kolekcii \"%s\""
-
-#: mediagoblin/user_pages/views.py:282
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s pridané do kolekcie \"%s\""
-
-#: mediagoblin/user_pages/views.py:307
-msgid "You deleted the media."
-msgstr "Výtvor bol tebou odstránený."
-
-#: mediagoblin/user_pages/views.py:319
-msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Výtvor nebol odstránený, nakoľko chýbalo tvoje potvrdenie."
-
-#: mediagoblin/user_pages/views.py:326
-msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Chystáš sa odstrániť výtvory niekoho iného. Pristupuj zodpovedne. "
-
-#: mediagoblin/user_pages/views.py:399
-msgid "You deleted the item from the collection."
-msgstr "Položka bola z kolekcie odstránená."
-
-#: mediagoblin/user_pages/views.py:403
-msgid "The item was not removed because you didn't check that you were sure."
-msgstr "Položka nebola odstránená, nakoľko políÄko potvrdenia nebolo oznaÄné."
-
-#: mediagoblin/user_pages/views.py:411
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
-msgstr "Chystáš sa odstrániť položku z kolekcie iného používateľa. Pristupuj zodpovedne. "
-
-#: mediagoblin/user_pages/views.py:443
-#, python-format
-msgid "You deleted the collection \"%s\""
-msgstr "Kolekcia \"%s\" bola úspešne odstránená."
-
-#: mediagoblin/user_pages/views.py:450
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
-msgstr "Kolekcia nebola odstránená, nakoľko políÄko potrvdenia nebolo oznaÄené."
-
-#: mediagoblin/user_pages/views.py:458
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
-msgstr "Chystáš sa odstrániť kolekciu iného používateľa. Pristupuj zodpovedne. "
diff --git a/mediagoblin/i18n/sk/mediagoblin.po b/mediagoblin/i18n/sk/mediagoblin.po
new file mode 100644
index 00000000..0b5992e9
--- /dev/null
+++ b/mediagoblin/i18n/sk/mediagoblin.po
@@ -0,0 +1,2635 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# martin, 2013
+# martin, 2012-2014
+# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012
+# Olle Jonsson <olle.jonsson@gmail.com>, 2012
+# Tanja Trudslev <tanja.trudslev@gmail.com>, 2012
+# martin, 2011-2012
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Slovak (http://www.transifex.com/projects/p/mediagoblin/language/sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr "PrepáÄ, registrácia na danej inÅ¡tancii nie je povolená."
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr "PrepáÄ, reportovanie je na tejto inÅ¡tancii vypnuté."
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr "PrepáÄ, autentifikácia je vypnutá pre túto inÅ¡tanciu."
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr "Nesprávne používateľské meno alebo e-mailová adresa."
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr "Toto pole neakceptuje e-mailové adresy."
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr "Toto pole vyžaduje e-mailovú adresu."
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr "PrepáÄ, rovnaké používateľské meno už existuje."
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr "PrepáÄ, rovnaká e-mailová adresa už bola použitá na vytvorenie úÄtu."
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr "VerifikaÄný kÄ¾ÃºÄ alebo používateľské ID nie je správne."
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr "Tvoja e-mailová adresa bola overená. Teraz sa môžeš prihlásiť, upravovať profil a vkladať výtvory!"
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr "Overovací kľúÄ, prípadne používateľské meno je nesprávne."
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Je potrebné prihlásiť sa, aby sme vedeli kam máme e-mail zaslať!"
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr "Už máš overenú e-mailovú adresu!"
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr "Opätovne zaslať overovací e-mail."
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Titulok"
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr "Popis výtvoru"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr "Môžeš využiť\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> pre formátovanie príspevku."
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr "Štítky"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr "Oddeľ Å¡títky pomocou Äiarky."
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr "Unikátna ÄasÅ¥ adresy"
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr "Unikátna ÄasÅ¥ adresy nesmie byÅ¥ prázdna"
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "Titulná ÄasÅ¥ adresy daného média. Zmena poľa nepovinná."
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Licencia"
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr "Bio"
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr "Webstránka"
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr "Daná adresa obsahuje chybu"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr "ZaÅ¡li mi e-mail keÄ ostatní okomentujú môj výtvor"
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr "Povoliť notifikácie ohľadom udalostí na stránke."
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr "Preferencia licencie"
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr "Nasledovná licencia bude použitá ako východzia pre všetky tvoje výtvory."
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr "Titulok nesmie byť prázdny."
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr "Popis danej kolekcie"
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "Titulná ÄasÅ¥ adresy danej kolekcie. Zmena poľa nepovinná."
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr "Staré heslo"
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr "Vlož svoje staré heslo na dôkaz toho, že vlastníš daný úÄet."
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr "Nové heslo"
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr "Nová e-mailová adresa"
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr "Heslo"
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr "Vlož svoje heslo pre overenie pravosti úÄtu."
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr "Položku s rovnakou unikátnou ÄasÅ¥ou adresy už niekde máš."
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "Upravuješ výtvory iného používateľa. Pristupuj zodpovedne. "
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Príloha %s pridaná!"
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr "Môžeš upravovať iba svoj vlastný profil."
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Upravuješ profil iného používateľa. Pristupuj zodpovedne. "
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr "Zmeny v profile uložené"
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr "Nastavenia úÄtu uložené"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "PotrebujeÅ¡ potvrdiÅ¥ odstránenie svojho úÄtu."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr "Už máš kolekciu nazvanú ako \"%s\"!"
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr "Kolekcia s týmto štítkom už máš."
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "Upravuješ kolekciu iného používateľa. Pristupuj zodpovedne. "
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr "Tvoja e-mailová adresa bola verifikovaná."
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr "Nesprávne heslo"
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr "Nemožno pripojiť tému... téma nenastavená\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr "Žiadny prieÄinok položiek pre túto tému\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Odstránené; hoci bol pôvodný symbolický odkaz adresára nájdený.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr "Nemožno odkazovať na \"%s\": %s existuje a nie je symbolickým odkazom\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr "Preskakujem \"%s\"; opakovane nastavené.\n"
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr "Nájdený starý odkaz pre \"%s\"; odstraňujem.\n"
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "CSRF \"cookie\" neprítomný. Toto vidíš najskôr ako výsledok blokovania \"cookie\" súborov a pod.<br/>Uisti sa, že máš povolené ukladanie \"cookies\" pre danú doménu."
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr "PrepáÄ, nepodporujem tento typ súborov =("
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Popis"
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "JednoznaÄne to chcem odstrániÅ¥"
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr "Skvelé! Pridané!"
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr "Výtvor nebol odstránený, nakoľko chýbalo tvoje potvrdenie."
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr "Upraviť"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr "Odstrániť"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "SkutoÄne odstrániÅ¥ %(title)s?"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Odstráňiť permanentne"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Pridať"
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr "beh unoconv zlyhal, preskúmajte log záznam"
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr "Konvertovanie videa zlyhalo"
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr "Odobrať privilégiá"
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr "Udeliť používateľovi BAN"
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr "Odstrániť obsah"
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr "BAN používateľa potrvá do:"
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr "PreÄo chceÅ¡ udeliÅ¥ BAN tomuto používateľovi?"
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr "Čo spravíš pre vyriešenie daného reportu?"
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "nekoneÄne"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr "okmentoval tvoj príspevok"
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr "Úspešný zápis odberu komentárov pre %s!"
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr "Nebudeš dostávať notifikácie ohľadom komentárov pre %s."
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr "Nutnosť poskytnúť OAuth token."
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr "Požadovaný token nenájdený."
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr "Aktuálne výtvory"
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr "Používateľské meno"
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr "Email adresse"
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr "Použivateľské meno alebo e-mail"
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr "Zostať prihlásený"
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr "Používateľské meno alebo e-mailová adresa"
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Pokiaľ daná e-mailová adresa (citlivá na veľkosť písma!) je registrovaná, e-mail z inštrukciami pre zmenu tvojho hesla bol zaslaný."
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr "Nemožno nájsť nikoho z daným používateľským menom."
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr "E-mailová správa z inštrukciami na zmenu tvojho hesla bola zaslaná."
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr "Nebolo možné zaslať e-mail na opätovné získanie zabudnutého hesla, nakoľko tvoje používateľské meno je neaktívne, prípadne e-mailová adresa nebola úspešne overená."
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr "Používateľské ID nie je správne."
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr "Už môžeš použiť nové heslo pri prihlasovaní."
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr "Tvoje heslo bolo úspešne zmenené"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Nastav svoje nové heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr "Nastav heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr "Mením heslo používateľa %(username)s"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr "Uložiť"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr "EÅ¡te stále nemáš úÄet?"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr "Vytvor si jeden tu!"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Obnoviť heslo"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Zaslať inštrukcie"
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr "Zabudnuté heslo?"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Zobraziť na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr "Prihlás sa pre vytvorenie úÄtu!"
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Povoliť"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Zakázať"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Meno"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "Meno v rámci OAuth klienta"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr "Toto bude viditeľné pre používateľov,\n ktorí sa môžu identifikovať cez tvoju aplikáciu."
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "Typ"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "<strong>Dôverné</strong> - Klient môže\nvytváraÅ¥ požiadavky na inÅ¡tanciu GNU MediaGoblin, ktoré nemôžu byÅ¥\nzachytené používateľským agentom (napr. klient na strane servera).<br />\n<strong>Verejné</strong> - Klient nemôže vytváraÅ¥ dôverné\npožiadavky voÄi GNU MediaGoblin inÅ¡tancii (napr. JavaScript-ový klient\n na klientskej strane)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "Presmerovacie URI"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr "Presmerovacie URI pre aplikácie, toto pole\nje <strong>požadované</strong> pre verejných klientov."
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "Dané pole je požadované pre verejných klientov."
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr "Klient {0} bol registrovaný!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "OAuth klientské spojenia"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Tvoji autorizovaní OAuth klienti"
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr "PrepáÄ, úÄet pre dané OpenID už existuje."
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr "PrepáÄ, OpenID server nebol nájdený"
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr "Nenájdená žiadna OpenID služba pre %s"
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr "Verifikácia %s zlyhala: %s"
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr "Verifikácia zrušená"
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr "URL k tvojmu OpenID úpešne zaznamenaný."
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr "Nesmieš odstániť svoj jediný OpenID URL, pokým nemáš nastavené heslo"
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr "OpenID nie je registrované k tomuto úÄtu."
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr "OpenID úspešne odstránené."
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr "Pridať OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr "Odstrániť OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr "OpenID"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr "Prihlásiť sa"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Prihlásenie zlyhalo!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr "Prihlás sa pre vytvorenie úÄtu!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr "Alebo sa prihlás z heslom!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr "Alebo sa prihlás z OpenID!"
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr "Alebo sa registruj z OpenID!"
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr "PrepáÄ, úÄet na daný Persona e-mail už existuje."
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr "E-mailová adresa Persona úspešne odstránená."
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr "Nesmieš odstrániť svoj jediný Persona e-mail, pokým nie je nastavené heslo."
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr "Persona e-mail nie je registrovaný k tomuto úÄtu."
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr "PrepáÄ, úÄet z danou Persona e-mailovou adresou už existuje."
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr "Tvoj Persona e-mail úspešne uložený."
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr "Odstrániť Persona e-mail"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr "Pridať Persona e-mail"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr "Alebo sa prihlás z Persona!"
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr "Alebo sa registruj z Persona!"
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr "Nesprávny typ súboru pre dané médium."
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr "Kopírovanie na verejný úložný priestor zlyhalo."
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr "Prijateľný spracúvavaný súbor nenájdený"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr "Súbor"
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr "Musíš poskytnúť súbor."
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Kolekcia \"%s\" pridaná!"
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Obrázok hysterického goblina"
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr "Over si e-mailovú adresu!"
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr "odhlásiť sa"
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr "ÚÄet používateľa <a href=\"%(user_url)s\">%(user_name)s</a>"
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr "ZmeniÅ¥ nastavenia úÄtu"
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Sekcia spracovania výtvorov"
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr "Odhlásiť sa"
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr "Pridať výtvor"
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Vytvoriť novú kolekciu"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr "Autorizácia"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr "Autorizovať"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr "Si prihlásený/á ako"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr "Chceš sa autorizovať"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr "v neznámej aplikácii"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr "pre prístup k svojmu úÄtu?"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr "Aplikácie z prístupom k tvojmu úÄtu môžu:"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr "Zaslať nové výtvory ako ty"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr "PrezrieÅ¥ vlastné info (napr. profil, výtvory atÄ.)"
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr "Zmeniť tvoje údaje"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr "Autorizácia dokonÄená"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr "Autorizácia kompletná"
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Opret en konto!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr "Vytvoriť"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "Ahoj %(username)s,\n\npre aktiváciu tvojho GNU MediaGoblin úÄtu, otvor nasledujúci odkaz vo\nsvojom prehliadaÄi:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Poháňa nás <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, súÄasÅ¥ projektu <a href=\"http://gnu.org/\">GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr "Uvoľnené pod <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Zdrojový kód</a> plne dostupný."
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr "Preskúmať"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Táto stránka používa <a href=\"http://mediagoblin.org\">MediaGoblin</a>, výnimoÄne skvelý kus softvéru na hostovanie médií."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr "Pre pridanie vlastných výtvorov, komentárov a viac.. sa prihlás zo svojim MediaGoblin úÄtom."
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr "Har du ikke en endnu? Det er let!"
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin logo"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "Úprava príloh pre %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr "Prílohy"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr "Pridať prílohu"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Uložiť zmeny"
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr "Zmena e-mailu používateľa %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "pred %(formatted_time)s "
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "SkutoÄne odstrániÅ¥ používateľa '%(user_name)s' a vÅ¡etky pridružené výtvory/komentáre?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Ãno, skutoÄne odstrániÅ¥ môj úÄet"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Úprava %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "Mením nastavenia úÄtu používateľa %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr "OdstrániÅ¥ môj úÄet"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr "E-mail"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr "Úprava %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Úprava profilu, ktorý vlastní %(username)s "
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr "Ahoj,\n\nChceli sme sa uisiť, že práve ty si %(username)s. Pokiaľ je tak, nasleduj\nprosím odkaz nižšie pre verifikáciu svojej novej e-mailovej adresy.\n\n%(verification_url)s\n\nPokiaľ nie si %(username)s alebo nebola zmena e-mailu žiadaná tebou,\npokojne túto správu ignoruj."
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr "Nové komentáre"
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr "OznaÄiÅ¥ ako preÄítané"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "Výtvory oznaÄené ako: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr "Stiahnuť"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr "Originál"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr "Originálny súbor"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr "WebM súbor (Vorbis kodek)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr "Vytvorené"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Obrázok pre %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr "PDF súbor"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr "Perspektíva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr "ÄŒelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr "Vrch"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr "Strana"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr "Stiahnuť model"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Súborový formát"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Výška objektu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "PrepáÄ, tento video súbor nepôjde prehraÅ¥, \n\tnakoľko tvoj prehliadaÄ nepodporuje HTML5 \n\tvideo."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr "MôžeÅ¡ získaÅ¥ moderný prehliadaÄ, ktorý\n\ttento video súbor hravo prehrá na <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr "WebM súbor (VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Tu môžeš sledovať stav médií spracovávaných na danej inštancii."
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Výtvory sa spracúvajú"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Žiadne výtvory v procese spracovania"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Nasledovné nahratia neprešli spracovaním:"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Žiadne zlyhané položky!"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr "Posledných 10 úspešných nahratí"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Zatiaľ žiadne spracované položky!"
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr "Vinník"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr "Čas nahlásenia"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr "Dôvod"
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr "Žiadne vyriešené nahlásenia."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr "Nutné overenie e-mailovej adresy"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profil, ktorý vlastní %(username)s"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "DotyÄný používateľ (zatiaľ) nevyplnil svoj profil."
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr "Upraviť profil"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr "Prehliadať kolekcie"
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Pridať kolekciu"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr "Pridaj svoj výtvor"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr "Pridať komentár"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr "Pridať tento komentár"
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr "Pridané"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (kolekcia používateľa %(username)s) "
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "%(collection_title)s od <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "SkutoÄne odstrániÅ¥ %(media_title)s z %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr "Odstrániť"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Kolekcie používateľa %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr "Kolekcie používateľa <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Ahoj %(username)s,\npoužívateľ %(comment_author)s okmentoval tvoj príspevok (%(comment_url)s) na %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Výtvory, ktoré vlastní %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr "Výtvory používateľa <a href=\"%(user_url)s\">%(username)s</a> zo štítkom <a href=\"%(tag_url)s\">%(tag)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "Výtvory, ktoré vlastní <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "■Prehliadanie výtvorov od <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr "Náhľad komentára"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Pridať “%(media_title)s†do kolekcie"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Pridať novú kolekciu"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Tu môžeš sledovať priebeh spracovania výtvorov pre svoju galériu."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Tvojich 10 posledných úspešných nahratí"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr "<h2>Nahlásiť</h2>"
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr "Na tomto mieste môžeš povedať o sebe ostatným."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Zobraziť všetky výtvory, ktoré vlastní %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "VÅ¡etky tvoje výtvory sa objavia práve tu, zatiaľ vÅ¡ak nemáš niÄ pridané."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Pravdepodobne sa tu nenachádzajú žiadne výtvory..."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Takmer hotovo! EÅ¡te je potrebné aktivovaÅ¥ tvoj úÄet."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "E-mail z inštrukciami ako na to by ti mal doraziť každú chvíľu."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr "V prípade, že nie:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr "Opätovne zaslať overovací e-mail."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "ÚÄet s týmto používateľským menom je už registrovaný, avÅ¡ak eÅ¡te stále neaktívny."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr "Pokiaľ si to ty, ale už nemáš uloženú kópiu overovacej správy, tak sa môžeš <a href=\"%(login_url)s\">prihlásiť</a> a preposlať si ju."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(odstrániť)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Zahrnuté"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Pridať do kolekcie"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "ikona ÄítaÄky"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom ÄítaÄka"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "Všetky práva vyhradené"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr "↠Novšie"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Staršie →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Prejsť na stránku:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "novšie"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "staršie"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Poloha"
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "OznaÄené ako"
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr "Nemožno preÄítaÅ¥ súbor obrázka."
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr "Hopla!"
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr "Vyskytla sa chyba"
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr "Zlá požiadavka"
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr "Požiadavka zaslaná na server nie správna, prosím opätovne ju skontroluj"
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr "Nepovolená operácia"
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "PrepÃ¡Ä ÄŒloveÄe, toto nesmieÅ¡!</p><p>Práve si chcel vykonaÅ¥ funkciu, na ktorú nemáš oprávnenie. Opäť si sa pokúšal odstrániÅ¥ vÅ¡etky používateľské úÄty?"
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Zdá sa, že na tejto adrese sa niÄ nenachádza. PrepáÄ!</p><p>Pokiaľ si si istý, že adresa je správna, možno bola hľadaná stránka presunutá, respektíve odstránená."
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr "rok"
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr "mesiac"
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr "týždeň"
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr "deň"
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr "hodina"
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr "minúta"
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Komentár"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr "Smieš používať <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Makrdown</a> pre formátovanie textu."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "SkutoÄne chcem odstrániÅ¥ danú položku z kolekcie"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Kolekcia"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Vybrať --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Pridať poznámku"
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr "Smieš použiť\n<a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\nMarkdown</a> pre formátovanie textu."
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr "PrepáÄ, komentovanie je vypnuté."
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr "Hopla, tvoj komentár bol prázdny."
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr "Tvoj komentár bol pridaný!"
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr "Prosím skontroluj svoje položky a skús znova."
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr "Musíš vybrať, prípadne pridať kolekciu"
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" sa už nachádza v kolekcii \"%s\""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s pridané do kolekcie \"%s\""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr "Výtvor bol tebou odstránený."
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Chystáš sa odstrániť výtvory niekoho iného. Pristupuj zodpovedne. "
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr "Položka bola z kolekcie odstránená."
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr "Položka nebola odstránená, nakoľko políÄko potvrdenia nebolo oznaÄné."
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "Chystáš sa odstrániť položku z kolekcie iného používateľa. Pristupuj zodpovedne. "
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Kolekcia \"%s\" bola úspešne odstránená."
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr "Kolekcia nebola odstránená, nakoľko políÄko potrvdenia nebolo oznaÄené."
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr "Chystáš sa odstrániť kolekciu iného používateľa. Pristupuj zodpovedne. "
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 24d3f003..00000000
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sl/mediagoblin.po
index 1c78b150..84918610 100644
--- a/mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sl/mediagoblin.po
@@ -1,32 +1,32 @@
# Translations template for PROJECT.
# Copyright (C) 2014 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
-#
-# Translators:
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
msgid ""
msgstr ""
-"Project-Id-Version: GNU MediaGoblin\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/mediagoblin/language/vi/)\n"
+"POT-Creation-Date: 2014-09-21 11:08-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
"Generated-By: Babel 1.3\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:303 mediagoblin/plugins/openid/views.py:202
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:318
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
+#: mediagoblin/decorators.py:361 mediagoblin/plugins/ldap/views.py:55
#: mediagoblin/plugins/persona/views.py:77
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
@@ -58,8 +58,8 @@ msgstr ""
#: mediagoblin/auth/views.py:161
msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
msgstr ""
#: mediagoblin/auth/views.py:167
@@ -81,7 +81,11 @@ msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -93,7 +97,8 @@ msgstr ""
#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -189,7 +194,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/tests/test_util.py:143
msgid "Password"
msgstr ""
@@ -330,7 +335,8 @@ msgstr ""
#: mediagoblin/gmg_commands/batchaddmedia.py:157
msgid ""
"Successfully submitted {filename}!\n"
-"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
"uploaded successfully."
msgstr ""
@@ -352,9 +358,9 @@ msgstr ""
#: mediagoblin/meddleware/csrf.py:134
msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch.<br/>Make sure to permit the settings of cookies for "
+"this domain."
msgstr ""
#: mediagoblin/media_types/__init__.py:79
@@ -538,6 +544,57 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:34
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:47
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:51
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:53
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:62
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:71
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:78
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
#: mediagoblin/moderation/tools.py:91
msgid "Warning from"
msgstr ""
@@ -556,11 +613,11 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:241
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:246 mediagoblin/oauth/views.py:297
msgid "No request token found."
msgstr ""
@@ -610,12 +667,18 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
"\n"
-" Go to the page of the media entry you want to feature. Copy it's URL and\n"
-" then paste it into a new line in the text box above. There should be only\n"
-" one url per line. The url that you paste into the text box should be under\n"
-" the header describing how prominent a feature it will be (whether Primary,\n"
-" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
-" inside the text box, click the Submit Query button, and your media should be\n"
+" Go to the page of the media entry you want to feature. Copy it's "
+"URL and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
" displayed on the front page.\n"
" "
msgstr ""
@@ -627,21 +690,33 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
"\n"
-" Yes. If you would prefer, you may go to the media homepage of the piece\n"
-" of media you would like to feature or unfeature and look at the bar to\n"
-" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
-" the media will be featured as a Primary Feature at the top of the page.\n"
-" All other featured media entries will remain as features, but will be\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
" pushed further down the page.<br /><br />\n"
"\n"
-" If you go to the media homepage of a piece of media that is currently\n"
-" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
-" where previously there was the button which said \"Feature\". Click\n"
-" Unfeature and that media entry will no longer be displayed on the\n"
-" front page, although you can feature it again at any point. Promote\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
" moves the featured media higher up on the page and makes it more\n"
-" prominent and Demote moves the featured media lower down and makes it\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
" less prominent.\n"
" "
msgstr ""
@@ -653,13 +728,19 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
"\n"
-" These categories just describe how prominent a feature will be on your\n"
-" front page. Primary Features are placed at the top of the front page and are\n"
-" much larger. Next are Secondary Features, which are slightly smaller.\n"
-" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
"\n"
-" Primary Features also can display longer descriptions than Secondary\n"
-" Features, and Secondary Features can display longer descriptions than\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
" Tertiary Features."
msgstr ""
@@ -672,12 +753,18 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
msgid ""
"\n"
-" When a media entry is featured, the entry's title, it's thumbnail and a\n"
-" portion of its description will be displayed on your website's front page.\n"
-" The number of characters displayed varies on the prominence of the feature.\n"
-" Primary Features display the first 512 characters of their description,\n"
-" Secondary Features display the first 256 characters of their description,\n"
-" and Tertiary Features display the first 128 characters of their description.\n"
+" When a media entry is featured, the entry's title, it's thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
" "
msgstr ""
@@ -688,7 +775,8 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
"\n"
-" Unfeature a media by removing its line from the above textarea and then\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
" pressing the Submit Query button.\n"
" "
msgstr ""
@@ -700,9 +788,12 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
"\n"
-" When copying and pasting urls into the above text box, be aware that if\n"
-" you make a typo, once you press Submit Query, your media entry will NOT be\n"
-" featured. Make sure that all your intended Media Entries are featured.\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
" "
msgstr ""
@@ -758,24 +849,26 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
-" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
-" featuring media, a regular user would see a blank page, so be sure to\n"
-" have media featured as long as your instance has the 'archivalook'\n"
-" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -841,8 +934,8 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:65
@@ -850,14 +943,13 @@ msgid "Couldn't find someone with that username."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
+msgid "An email has been sent with instructions on how to change your password."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:75
msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:123
@@ -973,10 +1065,14 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" make requests to the GNU MediaGoblin instance that can "
+"not be\n"
+" intercepted by the user agent (e.g. server-side "
+"client).<br />\n"
+" <strong>Public</strong> - The client can't make "
+"confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-"
+"side\n"
" JavaScript client)."
msgstr ""
@@ -1110,8 +1206,8 @@ msgstr ""
#: mediagoblin/plugins/persona/views.py:144
msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
+"You can't delete your only Persona email address unless you have a "
+"password set."
msgstr ""
#: mediagoblin/plugins/persona/views.py:149
@@ -1119,8 +1215,7 @@ msgid "That Persona email address is not registered to this account."
msgstr ""
#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
+msgid "Sorry, an account is already registered with that Persona email address."
msgstr ""
#: mediagoblin/plugins/persona/views.py:192
@@ -1170,7 +1265,8 @@ msgstr ""
#: mediagoblin/submit/forms.py:41
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -1201,10 +1297,6 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/base.html:97
msgid "Verify your email!"
msgstr ""
@@ -1246,6 +1338,10 @@ msgstr ""
msgid "Create new collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:163
+msgid "Moderation powers:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:169
msgid "User management panel"
msgstr ""
@@ -1331,15 +1427,16 @@ msgstr ""
#, python-format
msgid ""
"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
msgid ""
"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
@@ -1356,14 +1453,14 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
@@ -1380,7 +1477,9 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
-" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
@@ -1485,12 +1584,14 @@ msgstr ""
msgid ""
"Hi,\n"
"\n"
-"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
"please follow the link below to verify your new email address.\n"
"\n"
"%(verification_url)s\n"
"\n"
-"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
"this email."
msgstr ""
@@ -1630,8 +1731,7 @@ msgid "WebM file (VP8/Vorbis)"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
+msgid "Here you can track the state of media being processed on this instance."
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
@@ -1639,6 +1739,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1649,6 +1775,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1658,6 +1792,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1698,6 +1836,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1939,7 +2081,8 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
msgid ""
"\n"
-" Here you can look up users in order to take punitive actions on them.\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
" "
msgstr ""
@@ -1947,10 +2090,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -2040,7 +2179,8 @@ msgstr ""
#, python-format
msgid ""
"Hi %(username)s,\n"
-"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
@@ -2084,8 +2224,7 @@ msgid "Add a new collection"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
+msgid "You can track the state of media being processed for your gallery here."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
@@ -2143,8 +2282,7 @@ msgid "Almost done! Your account still needs to be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
+msgid "An email should arrive in a few moments with instructions on how to do so."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
@@ -2157,15 +2295,15 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
+"Someone has registered an account with this username, but it still has to"
+" be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
msgstr ""
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
@@ -2180,6 +2318,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2228,38 +2374,38 @@ msgstr ""
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:39
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:40
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:54
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:56
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:64
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:65
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:73
msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
msgstr ""
#: mediagoblin/tools/timesince.py:62
@@ -2292,7 +2438,8 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:25
msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
"target=\"_blank\">Markdown</a> for formatting."
msgstr ""
@@ -2315,7 +2462,9 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
-" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
" Markdown</a> for formatting."
msgstr ""
@@ -2371,8 +2520,8 @@ msgstr ""
#: mediagoblin/user_pages/views.py:421
msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
msgstr ""
#: mediagoblin/user_pages/views.py:453
@@ -2382,10 +2531,10 @@ msgstr ""
#: mediagoblin/user_pages/views.py:460
msgid ""
-"The collection was not deleted because you didn't check that you were sure."
+"The collection was not deleted because you didn't check that you were "
+"sure."
msgstr ""
#: mediagoblin/user_pages/views.py:468
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
+msgid "You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index b50023b2..00000000
--- a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sq/mediagoblin.po
index cf753dd8..d1fd9cd2 100644
--- a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sq/mediagoblin.po
@@ -1,132 +1,254 @@
# Translations template for PROJECT.
# Copyright (C) 2014 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
-#
# Translators:
# Besnik <besnik@programeshqip.org>, 2012-2013
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012
+# Besnik Bleta <besnik@programeshqip.org>, 2015.
+# Besnik_b <besnik@programeshqip.org>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/mediagoblin/language/sq/)\n"
+"POT-Creation-Date: 2015-06-03 21:15-0500\n"
+"PO-Revision-Date: 2015-11-25 20:05+0200\n"
+"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
+"Language-Team: sq\n"
+"Language: sq\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
-"Language: sq\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1424946063.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304
+#: mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Na ndjeni, regjistrimi në këtë instancë të shërbimit është i çaktivizuar."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr "Na ndjeni, në këtë instancë raportimi është i çaktivizuar"
+msgstr "Na ndjeni, raportimi është i çaktivizuar në këtë instancë."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362
+#: mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "Na ndjeni, mirëfilltësimi është i çaktivizuar për këtë instancë."
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "Emër përdoruesi ose adresë email e pavlefshme."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "Kjo fushë nuk është për adresa email."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "Kjo fushë lyp një adresë email."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Na ndjeni, ka tashmë një përdorues me këtë emër."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122
+#: mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Na ndjeni, ka tashmë një përdorues me këtë adresë email."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145
+#: mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429
+#: mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "Kyçi i verifikimit ose id-ja e përdoruesit është e pasaktë."
-#: mediagoblin/auth/views.py:161
-msgid ""
-"Your email address has been verified. You may now login, edit your profile, "
-"and submit images!"
+#: mediagoblin/auth/views.py:164
+msgid "Your email address has been verified. You may now login, edit your profile, and submit images!"
msgstr "Adresa juaj email u verifikua. Tani mund të bëni hyrjen, të përpunoni profilin tuaj, dhe të parashtroni figura!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Kyçi i verifikimit ose id-ja e përdoruesit është e pasaktë"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
-msgstr "Duhet të jeni i futur, që ta dimë kujt t'ia çojmë email-in!"
+msgstr "Duhet të jeni i futur, që ta dimë kujt t’ia çojmë email-in!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Thuajse e keni verifikuar adresën tuaj email!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Ridërgoni email-in tuaj të verifikimit."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} shtoi {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} shtoi {object} te {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} punoi {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} krijoi {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} fshiu {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} shprehu mospëlqim për {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} e caktoi {object} si të parapëlqyer"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr "{username} ndoqi {object}"
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} pëlqeu {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr "{username} postoi {object}"
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr "{username} postoi {object} te {target}"
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} ndau me të tjerët {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr "{username} e hoqi {object} nga të parapëlqyerat"
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr "{username} ndali ndjekjen e {object}"
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr "{username} e shpëlqeu {object}"
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr "{username} e hoqi {object} nga të ndarat me të tjerët"
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} përditësoi {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} etiketoi {object}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "një figurë"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "një koment"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "një koleksion"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr "një video"
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr "audio"
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "një person"
+
+#: mediagoblin/db/mixin.py:450
+#: mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "një objekt"
+
+#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
-#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/media_types/blog/forms.py:38
+#: mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titull"
-#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+#: mediagoblin/edit/forms.py:32
+#: mediagoblin/submit/forms.py:40
msgid "Description of this work"
msgstr "Përshkrim i kësaj pune"
-#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:33
+#: mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94
+#: mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr "Mund të përdorni\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a> për formatim."
+msgstr ""
+"Mund të përdorni\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> për formatim."
-#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/edit/forms.py:37
+#: mediagoblin/media_types/blog/forms.py:28
#: mediagoblin/submit/forms.py:45
msgid "Tags"
msgstr "Etiketa"
-#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+#: mediagoblin/edit/forms.py:39
+#: mediagoblin/submit/forms.py:47
msgid "Separate tags by commas."
msgstr "Ndajini etiketat me presje."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42
+#: mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Identifikues"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
-msgstr "Identifikuesi s'mund të jetë i zbrazët"
+msgstr "Identifikuesi s’mund të jetë i zbrazët"
#: mediagoblin/edit/forms.py:44
-msgid ""
-"The title part of this media's address. You usually don't need to change "
-"this."
+msgid "The title part of this media's address. You usually don't need to change this."
msgstr "Titulli i adresës së kësaj medie. Zakonisht nuk keni nevojë ta ndryshoni këtë."
-#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/edit/forms.py:48
+#: mediagoblin/media_types/blog/forms.py:32
#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr "Leje"
+msgstr "Licencë"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
@@ -134,131 +256,148 @@ msgstr "Jetëshkrim"
#: mediagoblin/edit/forms.py:60
msgid "Website"
-msgstr "Site Web"
+msgstr "Sajt"
#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
msgstr "Kjo adresë përmban gabime"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Vendlindja"
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Dërgomë email kur të tjerët komentojnë te media ime"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "Aktivizoni njoftime të brendshme për veprimtari."
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "Parapëlqime licence"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "Kjo do të jetë licenca juaj parazgjedhje për forma ngarkimesh."
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
-msgstr "Titulli s'mund të jetë i zbrazët"
+msgstr "Titulli s’mund të jetë i zbrazët"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93
+#: mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Përshkrim i këtij koleksioni"
-#: mediagoblin/edit/forms.py:99
-msgid ""
-"The title part of this collection's address. You usually don't need to "
-"change this."
+#: mediagoblin/edit/forms.py:100
+msgid "The title part of this collection's address. You usually don't need to change this."
msgstr "Pjesa titull e adresës së këtij koleksioni. Zakonisht nuk keni pse e ndryshoni këtë."
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107
+#: mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Fjalëkalimi i vjetër"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109
+#: mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "Jepni fjalëkalimin tuaj të vjetër që të provohet se këtë llogari e zotëroni ju."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112
+#: mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Fjalëkalimi i ri"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "Adresë email e re"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124
+#: mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Fjalëkalim"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "Jepni fjalëkalimin tuaj që të provohet se jeni i zoti i kësaj llogarie."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identifikues"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Vlerë"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Ka tashmë një zë me atë identifikues për këtë përdorues."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Po përpunoni media të një tjetër përdoruesi. Hapni sytë."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "Shtuat bashkangjitjen %s!"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "Mund të përpunoni vetëm profilin tuaj."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Po përpunoni profilin e një përdoruesi. Hapni sytë."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Ndryshimet e profilit u ruajtën"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Rregullimet e llogarisë u ruajtën"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr "Aplikacion i panjohur, nuk është në gjendje ta çautorizojë"
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr "Aplikacioni u çautorizua"
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "Lypset të ripohoni fshirjen e llogarisë suaj."
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363
+#: mediagoblin/submit/views.py:125
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Keni tashmë një koleksion të quajtur \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "Ka tashmë një koleksion me atë identifikues për këtë përdorues."
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Po përpunoni koleksionin e një tjetër përdoruesi. Hapni sytë."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "Adresa juaj email u verifikua."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458
+#: mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Fjalëkalim i gabuar"
@@ -289,133 +428,143 @@ msgstr "Po anashkalohet \"%s\"; e rregulluar tashmë.\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "U gjet lidhje e vjetër për \"%s\"; po hiqet.\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
"documentation page on command line uploading\n"
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
+"Për më tepër të dhëna se si të xhirohet si duhet ky programth\n"
+"(dhe se si të formatohet kartela cvs e tejtëdhënave), lexoni faqen\n"
+"e dokumentimit të MediaGoblin-it mbi ngarkime që nga rresht\n"
+"urdhrash <http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
-msgstr ""
+msgstr "Emri i përdoruesit të cilit i përkasin këto zëra media"
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
-msgstr ""
+msgstr "Shteg për te kartela csv që përmban informacion tejtëdhënash."
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
-msgstr ""
+msgstr "Mos e përpuno me padurim, kaloja celery-t"
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Na ndjeni, nuk ka përdorues me emër përdoruesi '{username}'"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
-msgstr ""
+msgstr "Nuk u gjet kartelë te {path}, përdorni parametrin -h për ndihmë"
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
+"Gabim me vlerën '{error_path}' të medias '{media_id}' : {error_msg}\n"
+"Nuk u ngarkuan tejtëdhëna."
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
+"DËSHTIM: Nuk hyhet dot te kartela vendore {filename}.\n"
+"{filename} nuk do të ngarkohet."
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
+"U parashtrua me sukses {filename}!\n"
+"Mos harroni të shihni te Paneli i Përpunimit të Media-s i sajtit tuaj, që të siguroheni\n"
+"se u ngarkua me sukses."
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
-msgstr ""
+msgstr "DËSHTIM: Kjo kartelë është më e madhe se kufijtë për ngarkime te ky sajt."
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
-msgstr ""
+msgstr "DËSHTIM: Kjo kartelë do ta kalojë përdoruesin tej kufijve të përditësimit për të."
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
-msgstr ""
+msgstr "DËSHTIM: Ky përdorues i ka tejkaluar tashmë kufijtë për ngarkime."
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "U parashtruan me sukses {files_uploaded} nga {files_attempted} gjithsej"
#: mediagoblin/meddleware/csrf.py:134
-msgid ""
-"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
-"domain."
-msgstr "Pa cookie CSRF të pranishme. Ka shumë të ngjarë që të jetë punë e një bllokuesi cookie-sh ose të tillë.<br/>Sigurohuni që të lejoni depozitim cookie-sh për këtë përkatësi."
+msgid "CSRF cookie not present. This is most likely the result of a cookie blocker or somesuch. Make sure to permit the setting of cookies for this domain."
+msgstr "Pa cookie CSRF të pranishme. Ka shumë të ngjarë që të jetë punë e një bllokuesi cookie-sh ose të tillë. Sigurohuni që të lejoni depozitim cookie-sh për këtë përkatësi."
-#: mediagoblin/media_types/__init__.py:79
-#: mediagoblin/media_types/__init__.py:101
+#: mediagoblin/media_types/__init__.py:77
+#: mediagoblin/media_types/__init__.py:100
+#: mediagoblin/media_types/__init__.py:136
msgid "Sorry, I don't support that file type :("
msgstr "Na ndjeni, nuk e mbullojmë këtë lloj kartele :("
#: mediagoblin/media_types/blog/forms.py:26
-#: mediagoblin/media_types/blog/forms.py:35
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/media_types/blog/forms.py:40
msgid "Description"
msgstr "Përshkrim"
-#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+#: mediagoblin/media_types/blog/forms.py:45
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Jam i sigurt që dua të fshihet kjo"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158
+#: mediagoblin/submit/views.py:70
msgid "Woohoo! Submitted!"
msgstr "Yhaaaaaa! U parashtrua!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
-msgstr ""
+msgstr "Urraaaa! Postimi i përpunuar u parashtrua"
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "E fshitë Blogun."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Media nuk u fshi ngaqë nuk i vutë shenjë pohimit se jeni i sigurt."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
-msgstr ""
+msgstr "Ju ndan një hap nga fshirja e blogut të një përdoruesi tjetër. Bëni kujdes."
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Blogu nuk fshi, ngaqë nuk keni të drejta."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Shtoni Postim Blogu"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Përpunoni Blogun"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Fshijeni Blogun"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Përpunoni"
@@ -425,17 +574,17 @@ msgstr "Përpunoni"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Fshije"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
-msgstr ""
+msgstr "<em> Shko te pamja si listë </em>"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr " Ende pa postime blogu. "
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -464,10 +613,9 @@ msgstr "Fshije përgjithmonë"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Krijoni/Përpunoni një Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
-#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
#: mediagoblin/templates/mediagoblin/submit/collection.html:30
#: mediagoblin/templates/mediagoblin/submit/start.html:39
@@ -477,34 +625,34 @@ msgstr "Shtoni"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Krijoni/Përpunoni një postim blogu."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Krijoni/Përpunoni një Postim Blogu."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "Blog nga %(blog_owner_name)s"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
-msgstr ""
+msgstr "Shihni"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Krijoni një Blog"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
-msgstr ""
+msgstr " Pult Blogu "
#: mediagoblin/media_types/pdf/processing.py:142
msgid "unoconv failing to run, check log file"
msgstr "unoconv nuk po arrin të xhirohet, kontrolloni kartelën e regjistrimeve"
-#: mediagoblin/media_types/video/processing.py:44
+#: mediagoblin/media_types/video/processing.py:45
msgid "Video transcoding failed"
msgstr "Ndërkodimi i videos dështoi"
@@ -524,7 +672,8 @@ msgstr "Dërgojini përdoruesit një mesazh"
msgid "Delete the content"
msgstr "Fshije lëndën"
-#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+#: mediagoblin/moderation/forms.py:53
+#: mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
msgstr "Përdoruesi do të dëbohet deri më:"
@@ -540,11 +689,71 @@ msgstr "Çfarë veprimesh do të ndërmerrni që të zgjidhni këtë raportim?"
msgid "What privileges will you take away?"
msgstr "Cilat privilegje do të hiqni?"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr "Pse u dëbua përdoruesi:"
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Mesazh përdoruesit:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr "Përmbajtja e vendimit:"
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr "Përmbajtja e vendimit:"
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+"\n"
+"{mod} dëboi përdoruesin {user} {expiration_date}."
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "deri mëuntil {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "pafundësisht"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+"\n"
+"{mod} dërgoi një email sinjalizimi për {user}."
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+"\n"
+"{mod} fshiu komentin."
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+"\n"
+"{mod} fshiu zërin media."
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "Sinjalizim prej"
-#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+#: mediagoblin/notifications/tools.py:54
+#: mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
msgstr "komentoi te postimi juaj"
@@ -558,56 +767,60 @@ msgstr "U pajtua te komentet në %s!"
msgid "You will not receive notifications for comments on %s."
msgstr "Nuk do të merrni njoftime për komente te %s."
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "Duhet dhënë një oauth_token."
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244
+#: mediagoblin/oauth/views.py:295
msgid "No request token found."
-msgstr "S'u gjet token kërkese."
+msgstr "S’u gjet token kërkese."
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:77
+#: mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:79
msgid "Sorry, the file size is too big."
msgstr "Na ndjeni, madhësia e kartelës është shumë e madhe."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:80
+#: mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:82
msgid "Sorry, uploading this file will put you over your upload limit."
-msgstr "Na ndjeni, ngarkimi i kësaj kartele do t'ju kalonte tej kufirit tuaj për ngarkime."
+msgstr "Na ndjeni, ngarkimi i kësaj kartele do t’ju kalonte tej kufirit tuaj për ngarkime."
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:84
+#: mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:88
msgid "Sorry, you have reached your upload limit."
msgstr "Na ndjeni, keni arritur kufirin tuaj për ngarkimet."
#: mediagoblin/plugins/archivalook/forms.py:21
msgid "Enter the URL for the media to be featured"
-msgstr ""
+msgstr "Jepni URL-në për median që do të paraqitet"
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Parësore"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Dytësore"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Terciare"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
-msgstr ""
+msgstr "-----------{display_type}-Të zgjedhura---------------------------\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Si funksionon kjo?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
-msgstr ""
+msgstr "Si të caktohet një media si e zgjedhur?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
msgid ""
@@ -621,10 +834,18 @@ msgid ""
" displayed on the front page.\n"
" "
msgstr ""
+"\n"
+" Shkoni te faqja e zërit media që doni të jetë e zgjedhur. Kopjoni URL-në e tij\n"
+" dhe mandej hidheni te një rresht i ri në kutinë e teksteve më sipër. Duhet të ketë\n"
+" vetëm një url për rresht. Url-ja që hidhni te kutia e teksteve duhet të jetë nën\n"
+" vendin ku përshkruhet se sa e dukshme do të jetë një veçori (Parësore, Dytësore, ose\n"
+" Terciare). Pasi t’i keni të gjithë zërat që doni të jenë të zgjedhur brenda kutisë\n"
+" së teksteve, klikoni mbi butonin Parashtro Kërkesë, dhe media juaj duhet të shfaqet\n"
+" te ballina.\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
msgid "Is there another way to manage featured media?"
-msgstr ""
+msgstr "Ka rrugë tjetër për të administruar media të zgjedhur?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
msgid ""
@@ -632,7 +853,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -647,10 +868,25 @@ msgid ""
" less prominent.\n"
" "
msgstr ""
+"\n"
+" Po. Nëse do të donit, mund të shkoni te faqja media e zërit që dëshironi\n"
+" ta keni të zgjedhur ose jo dhe shihni te shtylla në krah të zërit media.\n"
+" Nëse zëri media nuk është ende i zgjedhur, do të duhej të shihni një buton\n"
+" ku lexohet \"Caktojeni të Zgjedhur\". Shtypeni atë buton dhe media do kalohet\n"
+" në e zgjedhur, si E zgjedhur Parësore, në krye të faqes. Krejt zërat media\n"
+" të zgjedhur do të mbesin të zgjedhur, por do të shtyhen më poshtë në faqe.<br /><br />\n"
+"\n"
+" Nëse shkoni te faqja hyrëse e medias për një zë media që tani e keni\n"
+" të zgjedhur, do të shihni mundësitë \"Hiqeni Si të Zgjedhur\", \"Promovojeni\"\n"
+" dhe \"Shpromovojeni\" atje ku më parë qe butoni \"Caktojeni të Zgjedhur\".\n"
+" Klikoni mbi Hiqeni Si të Zgjedhur dhe ai zë media nuk do të shfaqet më te\n"
+" ballina, por mund ta caktoni sërish të zgjedhur, kur të doni. Promovojeni\n"
+" e kalon median e zgjedhur më sipër në faqe dhe e bën më të dukshme, ndërsa\n"
+" Shpromovojeni e ul më poshtë dhe e bën më pak të dukshëm.\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
msgid "What is a Primary Feature? What is a Secondary Feature?"
-msgstr ""
+msgstr "Ç’është e Zgjedhura Parësore? Po e Zgjedhura Dytësore?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
msgid ""
@@ -664,12 +900,23 @@ msgid ""
" Features, and Secondary Features can display longer descriptions than\n"
" Tertiary Features."
msgstr ""
+"\n"
+" Këto kategori thjesht përshkruajnë se sa e dukshme do të jetë në ballinën\n"
+" tuaj një e zgjedhur. Të Zgjedhurat Parësore vendosen në krye të ballinës dhe\n"
+" shumë më gjerë. Më pas vijnë të Zgjedhurat Dytësore, që janë pak më të vogla.\n"
+" Të Zgjedhurat Terciare krijojnë një rrjetë në fund të faqes.<br /><br />\n"
+"\n"
+" Të Zgjedhurat Parësore, veç kësaj, mund të shfaqin përshkrime më të gjata se\n"
+" sa ato Dytësore, dhe Dytësoret mund të shfaqin përshkrime më të gjata se sa\n"
+" ato Terciaret."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
msgid ""
"How to decide what information is displayed when a media entry is\n"
" featured?"
msgstr ""
+"Si të caktoni se çfarë të dhënash shfaqen kur një zë media kalohet si\n"
+" i zgjedhur?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
msgid ""
@@ -682,10 +929,17 @@ msgid ""
" and Tertiary Features display the first 128 characters of their description.\n"
" "
msgstr ""
+"\n"
+" Kur një zë media kalohet si i zgjedhur, titulli i zërit, miniatura e tij dhe\n"
+" një pjesë e përshkrimit do të shfaqen bë ballinën e sajtit tuaj. Numri i shenjave\n"
+" të shfaqura varet nga shkalla e dukjes së zgjedhur për të. Për të Zgjedhurat\n"
+" Parësore shfaqen 512 shenjat e para të përshkrimeve të tyre, për Dytësoret\n"
+" shfaqen 256 shenjat e para të përshkrimeve përkatëse, dhe për ato Terciare\n"
+" shfaqen 128 shenjat e para të përshkrimeve.\n"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
msgid "How to unfeature a piece of media?"
-msgstr ""
+msgstr "Si të hiqet nga e zgjedhur një media?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
msgid ""
@@ -694,10 +948,14 @@ msgid ""
" pressing the Submit Query button.\n"
" "
msgstr ""
+"\n"
+" Hiqeni një media nga e zgjedhur duke hequr rreshtin e saj prej fushës së\n"
+" teksteve më sipër dhe mandej duke shtypur butonin Parashtroje Kërkesën.\n"
+" "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "KUJDES:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -707,46 +965,59 @@ msgid ""
" featured. Make sure that all your intended Media Entries are featured.\n"
" "
msgstr ""
+"\n"
+" Kur kopjoni dhe ngjitni url-ra te kutia e teksteve më sipër, kini parasysh se, po\n"
+" bëni një gabim shkrimi, pasi të shtypni butonin Parashtro Kërkesën, zëri juaj media\n"
+" NUK do të kalohet i zgjedhur. Sigurohuni që janë të zgjedhura krejt Zërat Media që doni.\n"
+" "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
msgid ""
"\n"
"Feature Media "
msgstr ""
+"\n"
+"Caktoni Media Si të Zgjedhur "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
msgid "Feature"
-msgstr ""
+msgstr "Caktojeni të Zgjedhur"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
msgid ""
"\n"
"Unfeature Media "
msgstr ""
+"\n"
+"Hiqni Media Si të Zgjedhur "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
msgid "Unfeature"
-msgstr ""
+msgstr "Hiqeni Si të Zgjedhur"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
msgid ""
"\n"
"Promote Feature "
msgstr ""
+"\n"
+"Promovoni të Zgjedhur "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
msgid "Promote"
-msgstr ""
+msgstr "Promovojeni"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
msgid ""
"\n"
"Demote Feature "
msgstr ""
+"\n"
+"Shpromovoni të Zgjedhur "
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
msgid "Demote"
-msgstr ""
+msgstr "Shpromovojeni"
#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
#: mediagoblin/templates/mediagoblin/root.html:32
@@ -755,35 +1026,41 @@ msgstr "Mediat më të reja"
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
msgid "Nothing is currently featured."
-msgstr ""
+msgstr "Hëpërhë nuk ka asgjë të zgjedhur."
#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
+"Nëse doni ta kaloni një media si të zgjedhur,\n"
+" shkoni te faqja hyrëse e atij zëri dhe klikoni mbi\n"
+" butonin <a class=\"button_action\">Caktojeni Si të Zgjedhur</a>."
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
+"Këtë faqe po e shihni ngaqë jeni përdorues me të drejta caktimi mediash si\n"
+" të zgjedhura; një përdorues i zakonshëm do të shihte një faqe të zbrazët,\n"
+" ndaj sigurohuni që kalimi si e zgjedhur të bëhet sa kohë që keni\n"
+" të aktivizuar shtojcën 'archivalook'. Një mjet më i përparuar për\n"
+" administrim të zgjedhurash mund të gjendet te <a href=\"%(featured_media_url)s\">paneli i administrimit\n"
+" të të zgjedhurave.</a>"
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
-msgstr ""
+msgstr "Shihni mediat më të reja"
#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
msgid "Feature management panel"
-msgstr ""
+msgstr "Panel administrimi të zgjedhurash"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
msgid ""
@@ -791,6 +1068,9 @@ msgid ""
"\tyour web browser does not support HTML5\n"
"\taudio."
msgstr ""
+"Na ndjeni, kjo audio nuk do të funksionojë,\n"
+"\tngaqë shfletuesi juaj nuk i mbulon videot\n"
+"\tHTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
msgid ""
@@ -798,6 +1078,9 @@ msgid ""
"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
"\t http://getfirefox.com</a>!"
msgstr ""
+"Një shfletues modern që mund ta luajë\n"
+"\taudion mund ta merrni te <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
@@ -806,6 +1089,9 @@ msgid ""
" your web browser does not support HTML5 \n"
" video."
msgstr ""
+"Na ndjeni, kjo video nuk do të funksionojë,\n"
+" ngaqë shfletuesi juaj nuk i mbulon videot\n"
+" HTML5."
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
@@ -814,16 +1100,21 @@ msgid ""
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
+"Një shfletues modern që mund ta luajë \n"
+" këtë video mund ta merrni te <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
#: mediagoblin/plugins/basic_auth/forms.py:24
-#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/ldap/forms.py:35
+#: mediagoblin/plugins/openid/forms.py:27
#: mediagoblin/plugins/persona/forms.py:24
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
msgid "Username"
msgstr "Emër përdoruesi"
#: mediagoblin/plugins/basic_auth/forms.py:32
-#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/ldap/forms.py:28
+#: mediagoblin/plugins/openid/forms.py:31
#: mediagoblin/plugins/persona/forms.py:28
#: mediagoblin/plugins/persona/forms.py:39
msgid "Email address"
@@ -842,24 +1133,19 @@ msgid "Username or email"
msgstr "Emër përdoruesi ose email"
#: mediagoblin/plugins/basic_auth/views.py:54
-msgid ""
-"If that email address (case sensitive!) is registered an email has been sent"
-" with instructions on how to change your password."
-msgstr "Nëse ajo adresë email (siç është shkruajtur!) është e regjistruar, është dërguar një email me udhëzime se si të ndryshoni fjalëkalimin tuaj."
+msgid "If that email address (case sensitive!) is registered an email has been sent with instructions on how to change your password."
+msgstr "Nëse ajo adresë email (siç është shkruar!) është e regjistruar, është dërguar një email me udhëzime se si të ndryshoni fjalëkalimin tuaj."
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
-msgstr "S'u gjet dot dikush me atë emër përdoruesi."
+msgstr "S’u gjet dot dikush me atë emër përdoruesi."
#: mediagoblin/plugins/basic_auth/views.py:68
-msgid ""
-"An email has been sent with instructions on how to change your password."
+msgid "An email has been sent with instructions on how to change your password."
msgstr "Është dërguar një email me udhëzime se si të ndryshoni fjalëkalimin tuaj."
#: mediagoblin/plugins/basic_auth/views.py:75
-msgid ""
-"Could not send password recovery email as your username is inactive or your "
-"account's email address has not been verified."
+msgid "Could not send password recovery email as your username is inactive or your account's email address has not been verified."
msgstr "Email-i i ricaktimit të fjalëkalimit nuk u dërgua dot, ngaqë emri juaj i përdoruesit nuk është aktivizuar ose adresa email e llogarisë suaj nuk është verifikuar."
#: mediagoblin/plugins/basic_auth/views.py:123
@@ -871,9 +1157,7 @@ msgid "You can now log in using your new password."
msgstr "Tani mun të hyni duke përdorur fjalëkalimin tuaj të ri."
#: mediagoblin/plugins/basic_auth/views.py:163
-msgid ""
-"You are no longer an active user. Please contact the system admin to "
-"reactivate your account."
+msgid "You are no longer an active user. Please contact the system admin to reactivate your account."
msgstr "Nuk jeni më një përdorues aktiv. Ju lutemi, lidhuni me përgjegjësin e sistemit që të aktivizoni llogarinë tuaj."
#: mediagoblin/plugins/basic_auth/views.py:215
@@ -925,11 +1209,7 @@ msgstr "Dërgo udhëzime"
msgid "Forgot your password?"
msgstr "Harruat fjalëkalimin tuaj?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "Vend"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "Shiheni te <a href=\"%(osm_url)s\">OpenStreetMap</a>"
@@ -940,77 +1220,15 @@ msgstr "Për të krijuar një llogari, hyni!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Tejtëdhëna"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:29
-msgid "Allow"
-msgstr "Lejoje"
-
-#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Deny"
-msgstr "Mohoje"
-
-#: mediagoblin/plugins/oauth/forms.py:34
-msgid "Name"
-msgstr "Emër"
-
-#: mediagoblin/plugins/oauth/forms.py:35
-msgid "The name of the OAuth client"
-msgstr "Emri i klientit OAuth"
-
-#: mediagoblin/plugins/oauth/forms.py:38
-msgid ""
-"This will be visible to users allowing your\n"
-" application to authenticate as them."
-msgstr "Kjo do të jetë e dukshme për përdoruesit,\n duke i lejuar kështu zbatimit tuaj\n të kryejë mirëfilltësim si të qe njëri prej tyre."
-
-#: mediagoblin/plugins/oauth/forms.py:40
-msgid "Type"
-msgstr "Lloj"
-
-#: mediagoblin/plugins/oauth/forms.py:45
-msgid ""
-"<strong>Confidential</strong> - The client can\n"
-" make requests to the GNU MediaGoblin instance that can not be\n"
-" intercepted by the user agent (e.g. server-side client).<br />\n"
-" <strong>Public</strong> - The client can't make confidential\n"
-" requests to the GNU MediaGoblin instance (e.g. client-side\n"
-" JavaScript client)."
-msgstr "<strong>Konfidenciale</strong> - Kklienti mund\n të bëjë kërkesa te instanca GNU MediaGoblin që nuk mund\n të përgjohen nga agjenti i përdoruesit (p.sh. klient te shërbyesi).<br />\n <strong>Publike</strong> - Klienti nuk mund të bëjë kërkesa\n konfidenciale te instanca GNU MediaGoblin (p.sh. klient\n JavaScript i vetë klientit)."
-
-#: mediagoblin/plugins/oauth/forms.py:52
-msgid "Redirect URI"
-msgstr "URI Ridrejtimi"
-
-#: mediagoblin/plugins/oauth/forms.py:54
-msgid ""
-"The redirect URI for the applications, this field\n"
-" is <strong>required</strong> for public clients."
-msgstr "URI ridrejtimi për zbatimin, kjo fushë\n është <strong>e domosdoshme</strong> për klientë publikë."
-
-#: mediagoblin/plugins/oauth/forms.py:66
-msgid "This field is required for public clients"
-msgstr "Kjo fushë është e domosdoshme për klientë publikë"
-
-#: mediagoblin/plugins/oauth/views.py:55
-msgid "The client {0} has been registered!"
-msgstr "Klienti {0} u regjistrua!"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
-msgid "OAuth client connections"
-msgstr "Lidhje klienti OAuth"
-
-#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
-msgid "Your OAuth clients"
-msgstr "Klientët tuaj OAuth"
+msgstr "Përpunoni Tejtëdhëna"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "Na ndjeni, ka tashmë një llogari të regjistruar për atë OpenID."
@@ -1018,39 +1236,39 @@ msgstr "Na ndjeni, ka tashmë një llogari të regjistruar për atë OpenID."
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "Na ndjeni, nuk u gjet dot shërbyesi i OpenID-ve"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "Nuk u gjet shërbim OpenID për %s"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "Verifikimi i %s dështoi: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "Verifikimi u anulua"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "Url-ja e OpenID-së suaj u ruajt me sukses."
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
-msgstr "Nuk mundeni të fshini URL-në e të vetmes OpenID tuajës, veç në paçi të caktuar një fjalëkalim"
+msgstr "Nuk mundeni të fshini URL-në e të vetmes OpenID tuajës, veç në paçi të caktuar një fjalëkalim"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "Kjo OpenID nuk është e regjistruar për këtë llogari."
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID u hoq me sukses."
@@ -1069,12 +1287,12 @@ msgstr "Fshini një OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
msgid "OpenID's"
-msgstr ""
+msgstr "OpenID-je"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1106,26 +1324,23 @@ msgstr "Ose regjistrohuni me OpenID!"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "Na ndjeni, ka tashmë një llogari të regjistruar për këtë email Persona-je."
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Adresa email e Persona-s u hoq me sukses."
-#: mediagoblin/plugins/persona/views.py:144
-msgid ""
-"You can't delete your only Persona email address unless you have a password "
-"set."
+#: mediagoblin/plugins/persona/views.py:146
+msgid "You can't delete your only Persona email address unless you have a password set."
msgstr "Nuk mund të fshini adresën tuaj të vetme email Persona-je pa caktuar fjalëkalimin tuaj."
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "Ajo adresë email-i Persona-je nuk është e regjistruar për këtë llogari."
-#: mediagoblin/plugins/persona/views.py:176
-msgid ""
-"Sorry, an account is already registered with that Persona email address."
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
msgstr "Na ndjeni, ka tashmë të regjistruar një llogari me atë adresë email Persona-je."
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "Adresa email e Persona-s suaj u ruajt me sukses."
@@ -1139,7 +1354,7 @@ msgstr "Shtoni një adresë email Persona"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
msgid "Persona's"
-msgstr ""
+msgstr "Persona-je"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
msgid "Or login with Persona!"
@@ -1149,15 +1364,15 @@ msgstr "Ose bëni hyrjen me Persona!"
msgid "Or register with Persona!"
msgstr "Ose regjistrohuni me Persona!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:421
msgid "Invalid file given for media type."
msgstr "Kartelë e gabuar e dhënë për llojin e medias."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:428
msgid "Copying to public storage failed."
msgstr "Kopjimi te një depozitim publik dështoi."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:436
msgid "An acceptable processing file was not found"
msgstr "Nuk u gjet një kartelë e pranueshme përpunimi"
@@ -1174,13 +1389,16 @@ msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr "Për formatim teksti mund të përdorni\n <a href=\"http://daringfireball.net/projects/markdown/basics\">\n Markdown</a>."
+msgstr ""
+"Për formatim teksti mund të përdorni\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a>."
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:56
msgid "You must provide a file."
msgstr "Duhet të jepni një kartelë."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:131
#, python-format
msgid "Collection \"%s\" added!"
msgstr "U shtua koleksioni \"%s\"!"
@@ -1203,30 +1421,26 @@ msgstr "Jeni dëbuar"
msgid "until %(until_when)s"
msgstr "deri më %(until_when)s"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "pafundësisht"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "Verifikoni email-in tuaj!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "dilni"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "Llogaria e <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Ndryshoni rregullime llogarie"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1234,25 +1448,29 @@ msgstr "Ndryshoni rregullime llogarie"
msgid "Media processing panel"
msgstr "Paneli i përpunimit të medias"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Dilni"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Shtoni media"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "Krijoni koleksion të ri"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr "Të drejta Moderimi:"
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "Paneli i administrimit të përdoruesve"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "Paneli i administrimit të raporteve"
@@ -1271,11 +1489,11 @@ msgstr "Keni hyrë si"
#: mediagoblin/templates/mediagoblin/api/authorize.html:33
msgid "Do you want to authorize "
-msgstr "Doni të autorizoni"
+msgstr "Doni të autorizoni "
#: mediagoblin/templates/mediagoblin/api/authorize.html:37
msgid "an unknown application"
-msgstr "një zbatim të panjohur"
+msgstr "një aplikacion të panjohur"
#: mediagoblin/templates/mediagoblin/api/authorize.html:39
msgid " to access your account? "
@@ -1283,7 +1501,7 @@ msgstr " të hyjë dhe përdorë llogarinë tuaj? "
#: mediagoblin/templates/mediagoblin/api/authorize.html:41
msgid "Applications with access to your account can: "
-msgstr "Zbatimet me hyrje në llogarinë tuaj munden të:"
+msgstr "Aplikacionet me hyrje në llogarinë tuaj munden të: "
#: mediagoblin/templates/mediagoblin/api/authorize.html:43
msgid "Post new media as you"
@@ -1306,8 +1524,8 @@ msgid "Authorization Complete"
msgstr "Autorizim i Plotësuar"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "Këtë kopjojeni dhe ngjiteni te klienti juaj:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr "Kopjojeni dhe ngjiteni këtë <strong>kod verifikuesi</strong> te klienti juaj:"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -1327,21 +1545,22 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "Njatjeta %(username)s,\n\nqë të aktivizoni llogarinë tuaj te GNU MediaGoblin hapeni URL-në vijuese te\nshfletuesi juaj web:\n\n%(verification_url)s"
+msgstr ""
+"Njatjeta %(username)s,\n"
+"\n"
+"që të aktivizoni llogarinë tuaj te GNU MediaGoblin hapeni URL-në vijuese te\n"
+"shfletuesi juaj web:\n"
+"\n"
+"%(verification_url)s"
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
#, python-format
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
-"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgid "Powered by <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
msgstr "Bazuar në <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, një projekt <a href=\"http://gnu.org/\">GNU</a>."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
#, python-format
-msgid ""
-"Released under the <a "
-"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
-"href=\"%(source_link)s\">Source code</a> available."
+msgid "Released under the <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Source code</a> available."
msgstr "Hedhur në qarkullim sipas <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL-së</a>. <a href=\"%(source_link)s\">Kodi burim</a> është i passhëm."
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
@@ -1354,18 +1573,14 @@ msgstr "Eksploroni"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Tungjatjeta juaj, mirë se vini te ky site MediaGoblin!"
+msgstr "Tungjatjeta juaj, mirë se vini te ky sajt MediaGoblin!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
-msgid ""
-"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Ky site përdor <a href=\"http://mediagoblin.org\">MediaGoblin</a>, një program jashtëzakonisht i shkëlqyer për strehim mediash."
+msgid "This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an extraordinarily great piece of media hosting software."
+msgstr "Ky sajt përdor <a href=\"http://mediagoblin.org\">MediaGoblin</a>, një program jashtëzakonisht i shkëlqyer për strehim mediash."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
+msgid "To add your own media, place comments, and more, you can log in with your MediaGoblin account."
msgstr "Për të shtuar media tuajën, për të bërë komente, dhe të tjera, mund të hyni përmes llogarisë suaj MediaGoblin."
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
@@ -1378,12 +1593,17 @@ msgid ""
" >Create an account at this site</a>\n"
" or"
msgstr ""
+"\n"
+" >Krijoni një llogari në këtë sajt</a>\n"
+" ose"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
msgid ""
"\n"
" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
msgstr ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Rregulloni një instancë MediaGoblin në shërbyesin tuaj</a>"
#: mediagoblin/templates/mediagoblin/bits/logo.html:23
#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
@@ -1397,13 +1617,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "Po përpunohen bashkangjitjet për %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "Bashkangjitje"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "Shtoni bashkangjitje"
@@ -1421,6 +1641,49 @@ msgstr "Ruaji ndryshimet"
msgid "Changing %(username)s's email"
msgstr "Ndryshim i email-it për %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr "Çautorizoni aplikacione"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr "Autorizoni Aplikacione"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+"Këto aplikacione munden të hyjnë te llogaria juaj GNU MediaGoblin. Çautorizimi\n"
+" i aplikacionit do t’ia parandalojë atij hyrjen në llogarinë tuaj."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr "Nuk ka aplikacione të autorizuara."
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Lloj:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr "Autorizuar Më:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s më parë"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1446,7 +1709,7 @@ msgstr "Po ndryshohen rregullimet e llogarisë %(username)s"
msgid "Delete my account"
msgstr "Fshije llogarinë time"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Email"
@@ -1464,23 +1727,23 @@ msgstr "Po përpunohet profili i %(username)s"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
#, python-format
msgid "Metadata for \"%(media_name)s\""
-msgstr ""
+msgstr "Tejtëdhëna për \"%(media_name)s\""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "Tejtëdhëna"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
-msgstr ""
+msgstr "Shtoni Rresht të ri"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "Përditësoni Tejtëdhëna"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
-msgstr ""
+msgstr "Hiqi Rreshtat e zbrazët"
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
@@ -1494,25 +1757,21 @@ msgid ""
"\n"
"If you are not %(username)s or didn't request an email change, you can ignore\n"
"this email."
-msgstr "Njatjeta,\n\nDonim të verifikonim që jeni %(username)s. Nëse është kështu, atëherë, \nju lutemi, ndiqni lidhjen më poshtë që të verifikohet adresa juaj email e re.\n\n%(verification_url)s\n\nNëse nuk jeni %(username)s ose nuk kërkuat ndryshim email-i, mund\nta shpërfillni këtë email."
+msgstr ""
+"Njatjeta,\n"
+"\n"
+"Donim të verifikonim që jeni %(username)s. Nëse është kështu, atëherë, \n"
+"ju lutemi, ndiqni lidhjen më poshtë që të verifikohet adresa juaj email e re.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"Nëse nuk jeni %(username)s ose nuk kërkuat ndryshim email-i, mund\n"
+"ta shpërfillni këtë email."
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
msgid "New comments"
msgstr "Komente të reja"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s më parë"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "Shënoji të tëra si të lexuara"
@@ -1525,34 +1784,39 @@ msgstr "Shënoji të tëra si të lexuara"
msgid "Media tagged with: %(tag_name)s"
msgstr "Media e etiketuar me:: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "Shkarkojeni"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Origjinal"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:43
msgid ""
-"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "Na ndjeni, zëri s'do të funksionojë, ngaqë \n\tshfletuesi juaj s'mbulon audio HTML5."
+"Sorry, this audio will not work because\n"
+"\t your web browser does not support HTML5\n"
+"\t audio."
+msgstr ""
+"Na ndjeni, kjo audio s’do të funksionojë, ngaqë \n"
+"\t shfletuesi juaj s’mbulon audio HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:46
msgid ""
-"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Një shfletues web modern që mund të luajë \n\taudion mund ta merrni te <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+"You can get a modern web browser that\n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+"Një shfletues modern që mund të luajë \n"
+"\t audion mund ta merrni te <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Kartela origjinale"
@@ -1564,76 +1828,81 @@ msgstr "Kartelë WebM (kodek Vorbis)"
msgid "Created"
msgstr "U krijua"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "Figurë për %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "Kartelë PDF"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "Perspektivë"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "Ball"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "Krye"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "Anë"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "Shkarkojeni modelin"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Format Kartele"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Lartësi Objekti"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
-msgstr "Na ndjeni, kjo video nuk do të punojë ngaqë\n shfletuesi juaj web nuk mbulon videot\n HTML5."
+msgstr ""
+"Na ndjeni, kjo video nuk do të punojë ngaqë\n"
+" shfletuesi juaj web nuk mbulon videot\n"
+" HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
-msgstr "Mund të merrni një shfletues web modern që \n është në gjendje ta shfaqë këtë video, te <a href=\"http://getfirefox.com\">\n http://getfirefox.com</a>!"
+msgstr ""
+"Mund të merrni një shfletues web modern që \n"
+" është në gjendje ta shfaqë këtë video, te <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "Kartelë WebM (VP8/Vorbis)"
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
-msgid ""
-"Here you can track the state of media being processed on this instance."
+msgid "Here you can track the state of media being processed on this instance."
msgstr "Këtu mund të ndiqni gjendjen e medias që po përpunohet në këtë instancë."
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
@@ -1641,6 +1910,32 @@ msgstr "Këtu mund të ndiqni gjendjen e medias që po përpunohet në këtë in
msgid "Media in-processing"
msgstr "Media në përpunim"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Përdorues"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr "Parashtruar më"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr "Ecuri ndërkodimi"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "E panjohur"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1651,6 +1946,14 @@ msgstr "Pa media në përpunim"
msgid "These uploads failed to process:"
msgstr "Nuk arritën të kryheshin këto ngarkime:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr "Arsye dështimi"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr "Tejtëdhëna dështimi"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1660,6 +1963,10 @@ msgstr "Pa zëra të dështuar!"
msgid "Last 10 successful uploads"
msgstr "10 ngarkimet e fundit të suksesshme"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr "U parashtrua"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1674,7 +1981,7 @@ msgid "Return to Reports Panel"
msgstr "Kthehuni te Paneli i Raportimeve"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "Raport"
@@ -1688,7 +1995,10 @@ msgid ""
"\n"
" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
" "
-msgstr "\n â– Media e raportuar nga <a href=\"%(user_url)s\">%(user_name)s</a>\n "
+msgstr ""
+"\n"
+" â– Media e raportuar nga <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report.html:92
#, python-format
@@ -1698,7 +2008,16 @@ msgid ""
" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
" HAS BEEN DELETED\n"
" "
-msgstr "\n LËNDË NGA\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n ËSHTË FSHIRË\n "
+msgstr ""
+"\n"
+" LËNDË E\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" ËSHTË FSHIRË\n"
+" "
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr "Arsye raportimi:"
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
@@ -1716,7 +2035,7 @@ msgstr "Gjendje"
#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
-msgstr "ZGJIDHUR"
+msgstr "I ZGJIDHUR"
#: mediagoblin/templates/mediagoblin/moderation/report.html:159
msgid "You cannot take action against an administrator"
@@ -1732,11 +2051,14 @@ msgid ""
"\n"
" Here you can look up open reports that have been filed by users.\n"
" "
-msgstr "\n Këtu mund të kërkoni nëpër raportet që janë depozituar nga përdoruesit.\n "
+msgstr ""
+"\n"
+" Këtu mund të kërkoni nëpër raportet që janë depozituar nga përdoruesit.\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
msgid "Active Reports Filed"
-msgstr "Raportime Aktive të Depozituar"
+msgstr "Raportime Aktive të Depozituara"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
@@ -1763,7 +2085,10 @@ msgid ""
"\n"
" Comment Report #%(report_id)s\n"
" "
-msgstr "\n Raport Komenti #%(report_id)s\n "
+msgstr ""
+"\n"
+" Raportim Komenti #%(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
#, python-format
@@ -1771,11 +2096,14 @@ msgid ""
"\n"
" Media Report #%(report_id)s\n"
" "
-msgstr "\n Raportim Media #%(report_id)s\n "
+msgstr ""
+"\n"
+" Raportim Media #%(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
msgid "No open reports found."
-msgstr "S'u gjetën raportime të hapur."
+msgstr "S’u gjetën raportime të hapur."
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
msgid "Closed Reports"
@@ -1783,7 +2111,7 @@ msgstr "Raportime të Mbyllur"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
msgid "Resolved"
-msgstr "Zgjidhur"
+msgstr "I zgjidhur"
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
msgid "Action Taken"
@@ -1795,24 +2123,27 @@ msgid ""
"\n"
" Closed Report #%(report_id)s\n"
" "
-msgstr "\n Raportim i Mbyllur #%(report_id)s\n "
+msgstr ""
+"\n"
+" Raportim i Mbyllur #%(report_id)s\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
msgid "No closed reports found."
-msgstr "S'u gjetën raportime të mbyllur."
+msgstr "S’u gjetën raportime të mbyllur."
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "Përdoruesi: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
-msgstr ""
+msgstr "Kthehuni te Panel Përdoruesish"
#: mediagoblin/templates/mediagoblin/moderation/user.html:49
msgid "Sorry, no such user found."
-msgstr ""
+msgstr "Na ndjeni, nuk u gjet përdorues i tillë."
#: mediagoblin/templates/mediagoblin/moderation/user.html:53
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
@@ -1825,6 +2156,8 @@ msgid ""
"Someone has registered an account with this username, but it still has\n"
" to be activated."
msgstr ""
+"Dikush ka regjistruar një llogari me këtë emër përdoruesi, por ajo\n"
+" lypset të aktivizohet."
#: mediagoblin/templates/mediagoblin/moderation/user.html:66
#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
@@ -1837,11 +2170,11 @@ msgstr "Profili i %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:68
#, python-format
msgid "BANNED until %(expiration_date)s"
-msgstr ""
+msgstr "DËBUAR deri më %(expiration_date)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:72
msgid "Banned Indefinitely"
-msgstr ""
+msgstr "Dëbuar Pafundësisht"
#: mediagoblin/templates/mediagoblin/moderation/user.html:78
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
@@ -1852,7 +2185,7 @@ msgstr "Ky përdorues nuk e ka plotësuar (ende) profilin e vet."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
msgid "Edit profile"
-msgstr "Përpunoni profil"
+msgstr "Përpunoni profilin"
#: mediagoblin/templates/mediagoblin/moderation/user.html:96
#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
@@ -1862,76 +2195,76 @@ msgstr "Shfletoni koleksionet"
#: mediagoblin/templates/mediagoblin/moderation/user.html:105
#, python-format
msgid "Active Reports on %(username)s"
-msgstr ""
+msgstr "Raportime Aktive mbi %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:112
msgid "Report ID"
-msgstr ""
+msgstr "ID Raportimi"
#: mediagoblin/templates/mediagoblin/moderation/user.html:113
msgid "Reported Content"
-msgstr ""
+msgstr "Lëndë e Raportuar"
#: mediagoblin/templates/mediagoblin/moderation/user.html:114
msgid "Description of Report"
-msgstr ""
+msgstr "Përshkrim Raportimi"
#: mediagoblin/templates/mediagoblin/moderation/user.html:122
#, python-format
msgid "Report #%(report_number)s"
-msgstr ""
+msgstr "Raporti #%(report_number)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:129
msgid "Reported Comment"
-msgstr ""
+msgstr "Koment i Raportuar"
#: mediagoblin/templates/mediagoblin/moderation/user.html:131
msgid "Reported Media Entry"
-msgstr ""
+msgstr "Zë Media i Raportuar"
#: mediagoblin/templates/mediagoblin/moderation/user.html:142
#, python-format
msgid "No active reports filed on %(username)s"
-msgstr ""
+msgstr "Pa raportime aktive të depozituara mbi %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:150
#, python-format
msgid "All reports on %(username)s"
-msgstr ""
+msgstr "Krejt raportimet mbi %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:155
#, python-format
msgid "All reports that %(username)s has filed"
-msgstr ""
+msgstr "Krejt raportimet që ka depozituar %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:164
#, python-format
msgid "%(username)s's Privileges"
-msgstr ""
+msgstr "Privilegje për %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Privilegj"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "U dha"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Po"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Jo"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Dëboni Përdorues"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
-msgstr ""
+msgstr "Zhdëbojeni Përdoruesin"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
@@ -1943,16 +2276,15 @@ msgid ""
"\n"
" Here you can look up users in order to take punitive actions on them.\n"
" "
-msgstr "\n Këtu mund të kërkoni për përdorues, me qëllim marrjen e masave ndëshkuese për ta.\n "
+msgstr ""
+"\n"
+" Këtu mund të kërkoni për përdorues, me qëllim marrjen e masave ndëshkuese për ta.\n"
+" "
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
msgid "Active Users"
msgstr "Përdorues Aktivë"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "Ardhur Më"
@@ -1963,7 +2295,7 @@ msgstr "# i Komenteve të Postuara"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
msgid "No users found."
-msgstr "S'u gjetën përdorues."
+msgstr "S’u gjetën përdorues."
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
@@ -1977,20 +2309,20 @@ msgstr "Shtoni media tuajën"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
#, python-format
msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "â– Postim blogu nga <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Shtoni një koment"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Shtoje këtë koment"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "U shtua"
@@ -2007,17 +2339,17 @@ msgstr "%(collection_title)s nga <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
#, python-format
msgid "Delete collection %(collection_title)s"
-msgstr ""
+msgstr "Fshije koleksionin %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Të fshihet vërtet koleksioni: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
msgid "Remove %(media_title)s from %(collection_title)s"
-msgstr ""
+msgstr "Hiqe %(media_title)s nga %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
#, python-format
@@ -2043,7 +2375,9 @@ msgstr "Koleksione të <a href=\"%(user_url)s\">%(username)s</a>"
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr "Tungjatjeta %(username)s,\n%(comment_author)s ka komentuar te postimi juaj (%(comment_url)s) në %(instance_name)s\n"
+msgstr ""
+"Tungjatjeta %(username)s,\n"
+"%(comment_author)s ka komentuar te postimi juaj (%(comment_url)s) në %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
@@ -2052,9 +2386,7 @@ msgstr "Media nga %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
#, python-format
-msgid ""
-"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
-"href=\"%(tag_url)s\">%(tag)s</a>"
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a href=\"%(tag_url)s\">%(tag)s</a>"
msgstr "Media të <a href=\"%(user_url)s\">%(username)s</a> me etiketën <a href=\"%(tag_url)s\">%(tag)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
@@ -2062,12 +2394,12 @@ msgstr "Media të <a href=\"%(user_url)s\">%(username)s</a> me etiketën <a href
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "Media nga <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– Po shfletoni media nga <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "Paraparje Komenti"
@@ -2086,8 +2418,7 @@ msgid "Add a new collection"
msgstr "Shtoni një koleksion të ri"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
-msgid ""
-"You can track the state of media being processed for your gallery here."
+msgid "You can track the state of media being processed for your gallery here."
msgstr "Gjendjen e medias që po përpunohet për galerinë tuaj mund ta ndiqni nga këtu."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
@@ -2113,15 +2444,19 @@ msgid ""
" â– Published by <a href=\"%(user_url)s\"\n"
" class=\"comment_authorlink\">%(username)s</a>\n"
" "
-msgstr "\n â– Botuar nga <a href=\"%(user_url)s\"\n class=\"comment_authorlink\">%(username)s</a>\n "
+msgstr ""
+"\n"
+" â– Botuar nga <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
msgid "File Report "
-msgstr "Raportim Kartele"
+msgstr "Raportim Kartele "
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Here's a spot to tell others about yourself."
-msgstr "Ja një vend t'i tregoni botës mbi veten."
+msgstr "Ja një vend t’i tregoni botës mbi veten."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
#, python-format
@@ -2129,9 +2464,7 @@ msgid "View all of %(username)s's media"
msgstr "Shihni krejt mediat nga %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
-msgid ""
-"This is where your media will appear, but you don't seem to have added "
-"anything yet."
+msgid "This is where your media will appear, but you don't seem to have added anything yet."
msgstr "Media juaj do të shfaqet këtu, por nuk duket të keni shtuar gjë ende."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
@@ -2145,8 +2478,7 @@ msgid "Almost done! Your account still needs to be activated."
msgstr "Pothuajse mbaruam! Llogaria juaj ende lyp aktivizimin."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
-msgid ""
-"An email should arrive in a few moments with instructions on how to do so."
+msgid "An email should arrive in a few moments with instructions on how to do so."
msgstr "Brenda pak çastesh duhet t'ju mbërrijë një email me udhëzime se si të krhyet kjo."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
@@ -2158,16 +2490,12 @@ msgid "Resend verification email"
msgstr "Ridërgo email-in e verifikimit"
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
-msgid ""
-"Someone has registered an account with this username, but it still has to be"
-" activated."
+msgid "Someone has registered an account with this username, but it still has to be activated."
msgstr "Dikush ka regjistruar një llogari me këtë emër përdoruesi, por ajo duhet aktivizuar."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
#, python-format
-msgid ""
-"If you are that person but you've lost your verification email, you can <a "
-"href=\"%(login_url)s\">log in</a> and resend it."
+msgid "If you are that person but you've lost your verification email, you can <a href=\"%(login_url)s\">log in</a> and resend it."
msgstr "Nëse jeni ju ai person, por keni humbur email-in tuaj të verifikimit, mund të <a href=\"%(login_url)s\">hyni</a> dhe ta ridërgoni."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
@@ -2182,6 +2510,14 @@ msgstr "Pjesë e koleksionit"
msgid "Add to a collection"
msgstr "Shtoje te një koleksion"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Pajtohuni te komentet"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr "Heshtoji komentet"
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2218,6 +2554,10 @@ msgstr "më të reja"
msgid "older"
msgstr "më të vjetra"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Vend"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "Raportoni media"
@@ -2226,65 +2566,59 @@ msgstr "Raportoni media"
msgid "Tagged with"
msgstr "Etiketuar me"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "Nuk lexoi dot kartelën e figurës."
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Oooh!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "Ndodhi një gabim"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "Kërkesë e Gabuar"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "Kërkesa e dërguar te shërbyesi është e mangët, ju lutemi, rikontrollojeni"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "Veprim i palejuar"
-#: mediagoblin/tools/response.py:64
-msgid ""
-"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
-"function that you are not allowed to. Have you been trying to delete all "
-"user accounts again?"
+#: mediagoblin/tools/response.py:66
+msgid "Sorry Dave, I can't let you do that!</p><p>You have tried to perform a function that you are not allowed to. Have you been trying to delete all user accounts again?"
msgstr "Më ndjeni or trim, nuk ju lë dot ta bëni këtë!</p><p>Provuat të kryeni një funksion që nuk lejohet. Keni provuar prapë të fshini krejt llogaritë e përdoruesve?"
-#: mediagoblin/tools/response.py:72
-msgid ""
-"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
-" the address is correct, maybe the page you're looking for has been moved or"
-" deleted."
+#: mediagoblin/tools/response.py:74
+msgid "There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure the address is correct, maybe the page you're looking for has been moved or deleted."
msgstr "Nuk duket se ka ndonjë faqe në këtë adresë. Na ndjeni!</p><p>Nëse jeni i sigurt se kjo adresë është e saktë, ndoshta faqja që po kërkoni është lëvizur ose fshirë."
-#: mediagoblin/tools/timesince.py:62
+#: mediagoblin/tools/timesince.py:50
msgid "year"
msgstr "vit"
-#: mediagoblin/tools/timesince.py:63
+#: mediagoblin/tools/timesince.py:51
msgid "month"
msgstr "muaj"
-#: mediagoblin/tools/timesince.py:64
+#: mediagoblin/tools/timesince.py:52
msgid "week"
msgstr "javë"
-#: mediagoblin/tools/timesince.py:65
+#: mediagoblin/tools/timesince.py:53
msgid "day"
msgstr "ditë"
-#: mediagoblin/tools/timesince.py:66
+#: mediagoblin/tools/timesince.py:54
msgid "hour"
msgstr "orë"
-#: mediagoblin/tools/timesince.py:67
+#: mediagoblin/tools/timesince.py:55
msgid "minute"
msgstr "minutë"
@@ -2293,10 +2627,8 @@ msgid "Comment"
msgstr "Koment"
#: mediagoblin/user_pages/forms.py:25
-msgid ""
-"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
-"target=\"_blank\">Markdown</a> for formatting."
-msgstr "Mund të përdorni <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> për formatime."
+msgid "You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a> for formatting."
+msgstr "Për formatime mund të përdorni <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">Markdown</a>."
#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
@@ -2319,75 +2651,142 @@ msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
" Markdown</a> for formatting."
-msgstr "Mund të përdorni\n <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n Markdown</a> për formatime."
+msgstr ""
+"Mund të përdorni\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> për formatime."
-#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+#: mediagoblin/user_pages/forms.py:55
+#: mediagoblin/user_pages/forms.py:61
msgid "Reason for Reporting"
msgstr "Arsye për Raportim"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Na ndjeni, komentimi është i çaktivizuar."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Hmmm, komenti juaj qe i zbrazët."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Komenti juaj u postua!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "Ju lutemi, kontrolloni zërat tuaj dhe riprovoni."
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "Duhet të përzgjidhni ose shtoni një koleksion"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" gjendet tashmë te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" u shtua te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "E fshitë median."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Ju ndan një hap nga fshirja e medias të një tjetër përdoruesi. Hapni sytë."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "E fshitë objektin prej koleksionit."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Objekti nuk u fshi ngaqë, nuk pohuat se jeni të sigurt për këtë."
-#: mediagoblin/user_pages/views.py:421
-msgid ""
-"You are about to delete an item from another user's collection. Proceed with"
-" caution."
+#: mediagoblin/user_pages/views.py:424
+msgid "You are about to delete an item from another user's collection. Proceed with caution."
msgstr "Ju ndan një hap nga fshirja e një objekti prej koleksionit të një përdoruesi tjetër. Hapni sytë."
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "E fshitë koleksionin \"%s\""
-#: mediagoblin/user_pages/views.py:460
-msgid ""
-"The collection was not deleted because you didn't check that you were sure."
+#: mediagoblin/user_pages/views.py:463
+msgid "The collection was not deleted because you didn't check that you were sure."
msgstr "Koleksioni nuk u fshi ngaqë, nuk pohuat se jeni të sigurt për këtë."
-#: mediagoblin/user_pages/views.py:468
-msgid ""
-"You are about to delete another user's collection. Proceed with caution."
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
msgstr "Ju ndan një hap nga fshirja e koleksionit të një përdoruesi tjetër. Hapni sytë."
+
+#~ msgid "Allow"
+#~ msgstr "Lejoje"
+
+#~ msgid "Deny"
+#~ msgstr "Mohoje"
+
+#~ msgid "Name"
+#~ msgstr "Emër"
+
+#~ msgid "The name of the OAuth client"
+#~ msgstr "Emri i klientit OAuth"
+
+#~ msgid ""
+#~ "This will be visible to users allowing your\n"
+#~ " application to authenticate as them."
+#~ msgstr ""
+#~ "Kjo do të jetë e dukshme për përdoruesit,\n"
+#~ " duke i lejuar kështu aplikacionit\n"
+#~ " tuaj të kryejë mirëfilltësim si të qe\n"
+#~ " njëri prej tyre."
+
+#~ msgid "Type"
+#~ msgstr "Lloj"
+
+#~ msgid ""
+#~ "<strong>Confidential</strong> - The client can\n"
+#~ " make requests to the GNU MediaGoblin instance that can "
+#~ "not be\n"
+#~ " intercepted by the user agent (e.g. server-side client)."
+#~ "<br />\n"
+#~ " <strong>Public</strong> - The client can't make "
+#~ "confidential\n"
+#~ " requests to the GNU MediaGoblin instance (e.g. client-"
+#~ "side\n"
+#~ " JavaScript client)."
+#~ msgstr ""
+#~ "<strong>Konfidenciale</strong> - Kklienti mund\n"
+#~ " të bëjë kërkesa te instanca GNU MediaGoblin që nuk mund\n"
+#~ " të përgjohen nga agjenti i përdoruesit (p.sh. klient te "
+#~ "shërbyesi).<br />\n"
+#~ " <strong>Publike</strong> - Klienti nuk mund të bëjë "
+#~ "kërkesa\n"
+#~ " konfidenciale te instanca GNU MediaGoblin (p.sh. klient\n"
+#~ " JavaScript i vetë klientit)."
+
+#~ msgid "Redirect URI"
+#~ msgstr "URI Ridrejtimi"
+
+#~ msgid ""
+#~ "The redirect URI for the applications, this field\n"
+#~ " is <strong>required</strong> for public clients."
+#~ msgstr ""
+#~ "URI ridrejtimi për aplikacionin, kjo fushë\n"
+#~ " është <strong>e domosdoshme</strong> për klientë publikë."
+
+#~ msgid "This field is required for public clients"
+#~ msgstr "Kjo fushë është e domosdoshme për klientë publikë"
+
+#~ msgid "The client {0} has been registered!"
+#~ msgstr "Klienti {0} u regjistrua!"
+
+#~ msgid "OAuth client connections"
+#~ msgstr "Lidhje klienti OAuth"
+
+#~ msgid "Your OAuth clients"
+#~ msgstr "Klientët tuaj OAuth"
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 2be982e0..00000000
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sr/mediagoblin.po
index 0b609d26..24e32ec3 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sr/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Serbian (http://www.transifex.com/projects/p/mediagoblin/language/sr/)\n"
"MIME-Version: 1.0\n"
@@ -18,70 +18,174 @@ msgstr ""
"Language: sr\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"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -90,7 +194,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -106,11 +210,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -138,125 +242,137 @@ msgstr ""
msgid "This address contains errors"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr ""
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr ""
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr ""
@@ -287,7 +403,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -295,58 +411,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -372,28 +488,28 @@ msgstr ""
msgid "I am sure I want to delete this"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -413,7 +529,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr ""
@@ -423,7 +539,7 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr ""
@@ -538,7 +654,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -556,26 +723,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -630,7 +797,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -759,23 +926,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -923,11 +1087,7 @@ msgstr ""
msgid "Forgot your password?"
msgstr ""
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
@@ -994,7 +1154,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1007,8 +1167,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1016,39 +1176,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1072,7 +1232,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1104,26 +1264,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1147,15 +1307,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr ""
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1174,11 +1334,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1201,30 +1361,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1232,25 +1388,29 @@ msgstr ""
msgid "Media processing panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1304,7 +1464,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1395,13 +1555,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1419,6 +1579,47 @@ msgstr ""
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1444,7 +1645,7 @@ msgstr ""
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1498,19 +1699,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1523,38 +1711,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1562,70 +1750,70 @@ msgstr ""
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1639,6 +1827,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1649,6 +1863,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1658,6 +1880,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1672,7 +1898,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1698,6 +1924,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1947,10 +2177,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1978,17 +2204,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2060,12 +2286,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2180,6 +2406,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2216,6 +2450,10 @@ msgstr ""
msgid "older"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2224,38 +2462,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2323,69 +2561,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index ddc74d33..00000000
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sv/mediagoblin.po
index b76bfe83..764d475e 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sv/mediagoblin.po
@@ -1,89 +1,200 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# ersi <erik-transifex@simmesgard.se>, 2014
# ingenman <simon@ingenmansland.se>, 2011
# joar <transifex@wandborg.se>, 2011, 2012
+# ersi <erik-gnu@simmesgard.se>, 2015.
+# Erik <erik-gnu@simmesgard.se>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/mediagoblin/language/sv/)\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-02-18 19:29+0000\n"
+"Last-Translator: Erik <erik-gnu@simmesgard.se>\n"
+"Language-Team: Swedish "
+"(http://www.transifex.com/projects/p/mediagoblin/language/sv/)\n"
+"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
-"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"Generated-By: Babel 1.3\n"
+"X-POOTLE-MTIME: 1424287788.0\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
-msgstr "Vi beklagar, registreringen är avtängd på den här instansen."
+msgstr "Vi beklagar, registreringen är avstängd på den här instansen."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
-msgstr ""
+msgstr "Felaktigt användarnamn eller e-postadress."
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
-msgstr ""
+msgstr "Det här fältet tar inte e-postadresser."
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
-msgstr ""
+msgstr "Det här fältet kräver en e-postadress."
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "En användare med det användarnamnet finns redan."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Det finns redan en användare med den e-postadressen."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
-msgstr ""
+msgstr "Verifieringsnyckel eller användar-ID är felaktigt."
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Din e-postadress är verifierad. Du kan nu logga in, redigera din profil och ladda upp filer!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
-msgstr "Verifieringsnyckeln eller användar-IDt är fel."
+msgstr "Verifieringsnyckeln eller användar-IDt är fel"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
-msgstr "Du måste vara inloggad för att vi ska kunna skicka meddelandet till dig."
+msgstr ""
+"Du måste vara inloggad för att vi ska kunna skicka meddelandet till dig!"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Du har redan verifierat din e-postadress!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Skickade ett nytt verifierings-email."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr "{username} la till {object}"
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr "{username} la till {object} till {target}"
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr "{username} författade {object}"
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr "{username} skapade {object}"
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr "{username} tog bort {object}"
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr "{username} ogillade {object}"
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr "{username} favoritmarkerade {object}"
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr "{username} gillade {object}"
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr "{username} delade {object}"
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr "{username} uppdaterade {object}"
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr "{username} taggade {objekt}"
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr "en bild"
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr "en kommentar"
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr "en samling"
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr "en person"
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr "ett objekt"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
@@ -92,12 +203,16 @@ msgid "Description of this work"
msgstr "Beskrivning av verket"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
msgstr ""
+"Du kan använda\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> för att formattera texten."
#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
#: mediagoblin/submit/forms.py:45
@@ -108,11 +223,11 @@ msgstr "Taggar"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "Sökvägsnamn"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "Sökvägsnamnet kan inte vara tomt"
@@ -126,7 +241,7 @@ msgstr ""
#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Licens"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
@@ -138,127 +253,139 @@ msgstr "Hemsida"
#: mediagoblin/edit/forms.py:62
msgid "This address contains errors"
-msgstr ""
+msgstr "Den här addressen innehåller felaktigheter"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr "Hemstad"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
-msgstr ""
+msgstr "Titeln kan inte lämnas tom"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Tidigare lösenord"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Ange ditt gamla lösenord för att bevisa att du äger kontot."
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
-msgstr ""
+msgstr "Nytt lösenord"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
-msgstr ""
+msgstr "Ny e-postadress"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Lösenord"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
-msgstr ""
+msgstr "Ange ditt lösenord för att bevisa att du äger kontot."
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
-msgstr ""
+msgstr "Identifierare"
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
-msgstr ""
+msgstr "Värde"
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "Ett inlägg med det sökvägsnamnet existerar redan."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Var försiktig, du redigerar någon annans inlägg."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
-msgstr ""
+msgstr "Du kan bara ändra din egna profil."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Var försiktig, du redigerar en annan användares profil."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
-msgstr ""
+msgstr "Profilförändringar sparade"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
+msgstr "Kontoinställningar sparade"
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
msgstr ""
-#: mediagoblin/edit/views.py:282
-msgid "You need to confirm the deletion of your account."
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr "Du måste bekräfta borttagningen av ditt konto."
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Du har redan en samling som heter \"%s\"!"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du ändrar en annan användares samling. Fortsätt med försiktighet."
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
-msgstr ""
+msgstr "Din e-postadress har blivit verifierad."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Fel lösenord"
@@ -289,7 +416,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -297,58 +424,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "Beklagar, ingen användare vid namn '{username}' finns"
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -362,62 +489,62 @@ msgstr ""
#: mediagoblin/media_types/__init__.py:79
#: mediagoblin/media_types/__init__.py:101
msgid "Sorry, I don't support that file type :("
-msgstr ""
+msgstr "Förlåt, jag stödjer inte den filtypen :("
#: mediagoblin/media_types/blog/forms.py:26
#: mediagoblin/media_types/blog/forms.py:35
#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "Beskrivning"
#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Jag är säker på att jag vill radera detta"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Tjohoo! Upladdat!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
-msgstr ""
+msgstr "Du har tagit bort bloggen."
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
-msgstr ""
+msgstr "Bloggen togs inte bort eftersom du saknar rättigheter."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Lägg till blogginlägg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Ändra blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Ta bort blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
-msgstr ""
+msgstr "Ändra"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
@@ -425,9 +552,9 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
-msgstr ""
+msgstr "Ta bort"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
msgid "<em> Go to list view </em>"
@@ -435,7 +562,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
msgid " No blog post yet. "
-msgstr ""
+msgstr " Inga blogginlägg än. "
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -460,11 +587,11 @@ msgstr "Avbryt"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Delete permanently"
-msgstr ""
+msgstr "Ta bort permanent"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
-msgstr ""
+msgstr "Skapa/Ändra en blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
@@ -473,20 +600,20 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/submit/start.html:39
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
msgid "Create/Edit a blog post."
-msgstr ""
+msgstr "Skapa/Ändra ett blogginlägg."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
msgid "Create/Edit a Blog Post."
-msgstr ""
+msgstr "Skapa/Ändra ett blogginlägg."
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
#, python-format
msgid "%(blog_owner_name)s's Blog"
-msgstr ""
+msgstr "%(blog_owner_name)s blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
msgid "View"
@@ -494,7 +621,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
msgid "Create a Blog"
-msgstr ""
+msgstr "Skapa en blogg"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
msgid " Blog Dashboard "
@@ -510,27 +637,27 @@ msgstr ""
#: mediagoblin/moderation/forms.py:21
msgid "Take away privilege"
-msgstr ""
+msgstr "Ta bort rättighet"
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr ""
+msgstr "Bannlys användaren"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
-msgstr ""
+msgstr "Skicka anvädaren ett meddelande"
#: mediagoblin/moderation/forms.py:24
msgid "Delete the content"
-msgstr ""
+msgstr "Ta bort innehållet"
#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
msgid "User will be banned until:"
-msgstr ""
+msgstr "Användaren kommer vara bannlyst till och med:"
#: mediagoblin/moderation/forms.py:57
msgid "Why are you banning this User?"
-msgstr ""
+msgstr "Varför bannlyser du den här användaren?"
#: mediagoblin/moderation/forms.py:109
msgid "What action will you take to resolve the report?"
@@ -538,46 +665,97 @@ msgstr ""
#: mediagoblin/moderation/forms.py:115
msgid "What privileges will you take away?"
+msgstr "Vilka rättigheter vill du ta bort?"
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
-msgid "Warning from"
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr "Meddelande till användaren:"
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr "till och med {date}"
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
msgstr ""
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr "Varning från"
+
#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
msgid "commented on your post"
-msgstr ""
+msgstr "kommenterade ditt inlägg"
#: mediagoblin/notifications/views.py:35
#, python-format
msgid "Subscribed to comments on %s!"
-msgstr ""
+msgstr "Prenumererar nu på kommentarer för %s!"
#: mediagoblin/notifications/views.py:48
#, python-format
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
-msgstr ""
+msgstr "Beklagar, filstorleken är för stor."
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -587,15 +765,15 @@ msgstr ""
#: mediagoblin/plugins/archivalook/tools.py:132
msgid "Primary"
-msgstr ""
+msgstr "Primär"
#: mediagoblin/plugins/archivalook/tools.py:133
msgid "Secondary"
-msgstr ""
+msgstr "Sekundär"
#: mediagoblin/plugins/archivalook/tools.py:134
msgid "Tertiary"
-msgstr ""
+msgstr "Tertiär"
#: mediagoblin/plugins/archivalook/tools.py:135
msgid "-----------{display_type}-Features---------------------------\n"
@@ -603,7 +781,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
msgid "How does this work?"
-msgstr ""
+msgstr "Hur fungerar det här?"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
msgid "How to feature media?"
@@ -632,7 +810,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -697,7 +875,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "VARNING:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -761,23 +939,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -831,15 +1006,15 @@ msgstr "E-postadress"
#: mediagoblin/plugins/basic_auth/forms.py:39
msgid "Username or Email"
-msgstr ""
+msgstr "Användarnamn eller e-postadress"
#: mediagoblin/plugins/basic_auth/forms.py:46
msgid "Stay logged in"
-msgstr ""
+msgstr "Fortsätt vara inloggad"
#: mediagoblin/plugins/basic_auth/forms.py:51
msgid "Username or email"
-msgstr ""
+msgstr "Användarnamn eller e-postadress"
#: mediagoblin/plugins/basic_auth/views.py:54
msgid ""
@@ -849,7 +1024,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:65
msgid "Couldn't find someone with that username."
-msgstr ""
+msgstr "Kunde inte hitta någon vid det användarnamnet."
#: mediagoblin/plugins/basic_auth/views.py:68
msgid ""
@@ -868,7 +1043,7 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:139
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "Du kan nu logga in med ditt nya lösenord."
#: mediagoblin/plugins/basic_auth/views.py:163
msgid ""
@@ -878,27 +1053,27 @@ msgstr ""
#: mediagoblin/plugins/basic_auth/views.py:215
msgid "Your password was changed successfully"
-msgstr ""
+msgstr "Ditt lösenord har nu ändrats"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "Ange ditt nya lösenord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "Ange lösenord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
#, python-format
msgid "Changing %(username)s's password"
-msgstr ""
+msgstr "Ändrar %(username)s's lösenord"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
msgid "Save"
-msgstr ""
+msgstr "Spara"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
msgid "Don't have an account yet?"
@@ -910,7 +1085,7 @@ msgstr "Skapa ett här!"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
msgid "Change your password."
-msgstr ""
+msgstr "Ändra ditt lösenord."
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
@@ -925,38 +1100,34 @@ msgstr "Skicka instruktioner"
msgid "Forgot your password?"
msgstr "Glömt ditt lösenord?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
msgid "Sign in to create an account!"
-msgstr ""
+msgstr "Logga in för att skapa ett konto!"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
msgid "Metadata"
-msgstr ""
+msgstr "Metadata"
#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
msgid "Edit Metadata"
-msgstr ""
+msgstr "Ändra metadata"
#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
-msgstr ""
+msgstr "Tillåt"
#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
-msgstr ""
+msgstr "Neka"
#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "Namn"
#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
@@ -970,7 +1141,7 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "Typ"
#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
@@ -996,9 +1167,9 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
-msgstr ""
+msgstr "Klient {0] har registrerats!"
#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
msgid "OAuth client connections"
@@ -1009,48 +1180,48 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
#: mediagoblin/plugins/openid/forms.py:38
msgid "OpenID"
-msgstr ""
+msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
-msgstr ""
+msgstr "Verifiering av %s misslyckades: %s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
-msgstr ""
+msgstr "Verifiering misslyckades"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1059,13 +1230,13 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
msgid "Add an OpenID"
-msgstr ""
+msgstr "Lägg till ett OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
msgid "Delete an OpenID"
-msgstr ""
+msgstr "Ta bort ett OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
msgid "OpenID's"
@@ -1074,7 +1245,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1088,44 +1259,44 @@ msgstr "Inloggning misslyckades!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
msgid "Log in to create an account!"
-msgstr ""
+msgstr "Logga in för att skapa ett konto!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
msgid "Or login with a password!"
-msgstr ""
+msgstr "Eller logga in med lösenord!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
msgid "Or login with OpenID!"
-msgstr ""
+msgstr "Eller logga in med OpenID!"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
msgid "Or register with OpenID!"
-msgstr ""
+msgstr "Eller registrera dig med OpenID!"
#: mediagoblin/plugins/persona/__init__.py:90
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1143,21 +1314,21 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
msgid "Or login with Persona!"
-msgstr ""
+msgstr "Eller logga in med Persona!"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
msgid "Or register with Persona!"
-msgstr ""
+msgstr "Eller registrera med Persona!"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Ogiltig fil för mediatypen."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
-msgstr ""
+msgstr "Kopiering till delat utrymme misslyckades."
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1176,18 +1347,18 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
-msgstr "Du måste ange en fil"
+msgstr "Du måste ange en fil."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Samling \"%s\" tillagd!"
#: mediagoblin/templates/mediagoblin/banned.html:20
msgid "You are Banned."
-msgstr ""
+msgstr "Du är bannlyst."
#: mediagoblin/templates/mediagoblin/banned.html:24
#: mediagoblin/templates/mediagoblin/error.html:24
@@ -1196,37 +1367,33 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/banned.html:26
msgid "You have been banned"
-msgstr ""
+msgstr "Du har blivit bannlyst"
#: mediagoblin/templates/mediagoblin/banned.html:28
#, python-format
msgid "until %(until_when)s"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
+msgstr "till och med %(until_when)s"
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
-msgstr "Verifiera din e-postadress"
+msgstr "Verifiera din e-postadress!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
-msgstr ""
+msgstr "logga ut"
-#: mediagoblin/templates/mediagoblin/base.html:131
-#, python-format
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, fuzzy, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
+msgstr "<a href=\"%(user_url)s\">%(user_name)s</a>'s konto"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
-msgstr ""
+msgstr "Ändra kontoinställningar"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1234,25 +1401,29 @@ msgstr ""
msgid "Media processing panel"
msgstr "Mediabehandlingspanel"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
-msgstr ""
+msgstr "Logga ut"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Lägg till media"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
+msgstr "Skapa ny samling"
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1267,7 +1438,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/api/authorize.html:29
msgid "You are logged in as"
-msgstr ""
+msgstr "Du är inloggad som"
#: mediagoblin/templates/mediagoblin/api/authorize.html:33
msgid "Do you want to authorize "
@@ -1275,7 +1446,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/api/authorize.html:37
msgid "an unknown application"
-msgstr ""
+msgstr "en okänd applikation"
#: mediagoblin/templates/mediagoblin/api/authorize.html:39
msgid " to access your account? "
@@ -1291,11 +1462,11 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/api/authorize.html:44
msgid "See your information (e.g profile, media, etc...)"
-msgstr ""
+msgstr "Visa din information (t.ex. profil, uppladdad media, m.m...)"
#: mediagoblin/templates/mediagoblin/api/authorize.html:45
msgid "Change your information"
-msgstr ""
+msgstr "Ändra din information"
#: mediagoblin/templates/mediagoblin/api/oob.html:21
msgid "Authorization Finished"
@@ -1306,7 +1477,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1370,7 +1541,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
msgid "Don't have one yet? It's easy!"
-msgstr "Har du inte ett redan?"
+msgstr "Har du inte ett redan? Det är lätt!"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
msgid ""
@@ -1397,15 +1568,15 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
-msgstr ""
+msgstr "Bilagor"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
-msgstr ""
+msgstr "Lägg till bilaga"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
@@ -1419,8 +1590,49 @@ msgstr "Spara ändringar"
#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
#, python-format
msgid "Changing %(username)s's email"
+msgstr "Ändra %(username)s e-postadress"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr "Typ:"
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s sedan"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1428,7 +1640,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
msgid "Yes, really delete my account"
-msgstr ""
+msgstr "Ja, ta verkligen bort mitt konto"
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
@@ -1440,15 +1652,15 @@ msgstr "Redigerar %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
-msgstr ""
+msgstr "Ändra %(username)s's kontoinställningar"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
msgid "Delete my account"
-msgstr ""
+msgstr "Ta bort mitt konto"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
-msgstr ""
+msgstr "E-postadress"
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
@@ -1468,19 +1680,19 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
msgid "MetaData"
-msgstr ""
+msgstr "Metadata"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
msgid "Add new Row"
-msgstr ""
+msgstr "Lägg till ny rad"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
msgid "Update Metadata"
-msgstr ""
+msgstr "Uppdatera metadata"
#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
msgid "Clear empty Rows"
-msgstr ""
+msgstr "Töm tomma rader"
#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
#, python-format
@@ -1498,24 +1710,11 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
msgid "New comments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
+msgstr "Nya kommentarer"
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
-msgstr ""
+msgstr "Markera alla som lästa"
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -1525,109 +1724,109 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr "Media taggat med: %(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
-msgstr ""
+msgstr "Ladda ned"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Original"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
msgid "Created"
-msgstr ""
+msgstr "Skapad"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
-msgstr ""
+msgstr "PDF-fil"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
-msgstr ""
+msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
-msgstr ""
+msgstr "Ladda ned modell"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "Filformat"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1641,6 +1840,32 @@ msgstr ""
msgid "Media in-processing"
msgstr "Media under behandling"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Användare"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr "Okänd"
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1651,6 +1876,14 @@ msgstr "Ingen media under behandling"
msgid "These uploads failed to process:"
msgstr "De här behandlingarna misslyckades:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1660,6 +1893,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1674,13 +1911,13 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
-msgstr ""
+msgstr "Rapportera"
#: mediagoblin/templates/mediagoblin/moderation/report.html:38
msgid "Reported comment"
-msgstr ""
+msgstr "Rapportera kommentar"
#: mediagoblin/templates/mediagoblin/moderation/report.html:83
#, python-format
@@ -1700,6 +1937,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1712,7 +1953,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:149
msgid "Status"
-msgstr ""
+msgstr "Status"
#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
@@ -1804,7 +2045,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:23
#, python-format
msgid "User: %(username)s"
-msgstr ""
+msgstr "Användare: %(username)s"
#: mediagoblin/templates/mediagoblin/moderation/user.html:42
msgid "Return to Users Panel"
@@ -1818,7 +2059,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
msgid "Email verification needed"
-msgstr "E-postadressverifiering krävs."
+msgstr "E-postadressverifiering krävs"
#: mediagoblin/templates/mediagoblin/moderation/user.html:55
msgid ""
@@ -1911,23 +2152,23 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:172
msgid "Privilege"
-msgstr ""
+msgstr "Rättighet"
#: mediagoblin/templates/mediagoblin/moderation/user.html:173
msgid "Granted"
-msgstr ""
+msgstr "Beviljad"
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Ja"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Nej"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
-msgstr ""
+msgstr "Bannlys användare"
#: mediagoblin/templates/mediagoblin/moderation/user.html:218
msgid "UnBan User"
@@ -1947,11 +2188,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
msgid "Active Users"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
+msgstr "Aktiva användare"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
@@ -1963,11 +2200,11 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
msgid "No users found."
-msgstr ""
+msgstr "Hittade inga användare."
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
-msgstr ""
+msgstr "Lägg till en samling"
#: mediagoblin/templates/mediagoblin/submit/start.html:28
#: mediagoblin/templates/mediagoblin/submit/start.html:35
@@ -1980,19 +2217,19 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
-msgstr ""
+msgstr "Lägg till en kommentar"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
-msgstr ""
+msgstr "Tillagd"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
@@ -2012,7 +2249,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
#, python-format
msgid "Really delete collection: %(title)s?"
-msgstr ""
+msgstr "Vill du verkligen ta bort samling: %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
#, python-format
@@ -2026,12 +2263,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
msgid "Remove"
-msgstr ""
+msgstr "Ta bort"
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
#, python-format
msgid "%(username)s's collections"
-msgstr ""
+msgstr "%(username)s samlingar"
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
#, python-format
@@ -2048,7 +2285,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
-msgstr "%(username)ss media"
+msgstr "%(username)s media"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
#, python-format
@@ -2062,28 +2299,28 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>s media"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
-msgstr ""
+msgstr "Förhandsgranska kommentar"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
msgid "Add “%(media_title)s†to a collection"
-msgstr ""
+msgstr "Lägg till \"%(media_title)s\" i en samling"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Lägg till ny samling"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -2138,7 +2375,7 @@ msgstr "Här kommer din media att dyka upp, du verkar inte ha lagt till någonti
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
msgid "There doesn't seem to be any media here yet..."
-msgstr "Det verkar inte finnas någon media här ännu."
+msgstr "Det verkar inte finnas någon media här ännu..."
#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
msgid "Almost done! Your account still needs to be activated."
@@ -2172,14 +2409,22 @@ msgstr "Om det är du som är den personen och har förlorat ditt e-postmeddelan
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
-msgstr ""
+msgstr "(ta bort)"
#: mediagoblin/templates/mediagoblin/utils/collections.html:21
msgid "Collected in"
-msgstr ""
+msgstr "Samlad i"
#: mediagoblin/templates/mediagoblin/utils/collections.html:40
msgid "Add to a collection"
+msgstr "Lägg till i samling"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr "Prenumerera på kommentarer"
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
msgstr ""
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
@@ -2198,25 +2443,29 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "↠Newer"
-msgstr ""
+msgstr "↠Nyare"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr ""
+msgstr "Äldre →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
-msgstr ""
+msgstr "GÃ¥ till sida:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr ""
+msgstr "nyare"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr ""
+msgstr "äldre"
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Plats"
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
@@ -2224,40 +2473,40 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr ""
+msgstr "Taggad med"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Ojoj!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
-msgstr ""
+msgstr "Ett fel inträffade"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2266,31 +2515,31 @@ msgstr ""
#: mediagoblin/tools/timesince.py:62
msgid "year"
-msgstr ""
+msgstr "Ã¥r"
#: mediagoblin/tools/timesince.py:63
msgid "month"
-msgstr ""
+msgstr "månad"
#: mediagoblin/tools/timesince.py:64
msgid "week"
-msgstr ""
+msgstr "vecka"
#: mediagoblin/tools/timesince.py:65
msgid "day"
-msgstr ""
+msgstr "dag"
#: mediagoblin/tools/timesince.py:66
msgid "hour"
-msgstr ""
+msgstr "timme"
#: mediagoblin/tools/timesince.py:67
msgid "minute"
-msgstr ""
+msgstr "minut"
#: mediagoblin/user_pages/forms.py:23
msgid "Comment"
-msgstr ""
+msgstr "Kommentar"
#: mediagoblin/user_pages/forms.py:25
msgid ""
@@ -2300,15 +2549,15 @@ msgstr ""
#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
-msgstr ""
+msgstr "Jag är säker på att jag vill ta bort föremålet från samlingen"
#: mediagoblin/user_pages/forms.py:39
msgid "Collection"
-msgstr ""
+msgstr "Samling"
#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
-msgstr ""
+msgstr "-- Välj --"
#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
@@ -2320,74 +2569,80 @@ msgid ""
" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
" Markdown</a> for formatting."
msgstr ""
+"Du kan använda\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> för att formatera texten."
#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
-msgstr ""
+msgstr "Beklagar, kommentering är avstängt."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
-msgstr ""
+msgstr "Ojdå, din kommentar var tom."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
-msgstr ""
+msgstr "Din kommentar har skickats in!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
-msgstr ""
+msgstr "Du måste välja eller lägga till en samling"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" finns redan i samling \"%s\""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s\" lades till i samling \"%s\""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Du tänker radera en annan användares media. Var försiktig."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Du har tagit bort föremålet från samlingen."
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Du tog bort samlingen \"%s\""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Samlingen togs inte bort, eftersom du inte bekräftade borttagningen."
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
+"Du håller på att ta bort en annan användares samling. Fortsätt med "
+"försiktighet."
diff --git a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 5e4fcda1..00000000
--- a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/te/mediagoblin.po
index 14634cc9..4ece607f 100644
--- a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/te/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Telugu (http://www.transifex.com/projects/p/mediagoblin/language/te/)\n"
"MIME-Version: 1.0\n"
@@ -19,70 +19,174 @@ msgstr ""
"Language: te\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "శీరà±à°·à°¿à°•"
@@ -91,7 +195,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -107,11 +211,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -139,125 +243,137 @@ msgstr ""
msgid "This address contains errors"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr ""
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "సంకేతపదం"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr ""
@@ -288,7 +404,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -296,58 +412,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -373,28 +489,28 @@ msgstr ""
msgid "I am sure I want to delete this"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -414,7 +530,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr ""
@@ -424,7 +540,7 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr ""
@@ -539,7 +655,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -557,26 +724,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -631,7 +798,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -760,23 +927,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -924,11 +1088,7 @@ msgstr ""
msgid "Forgot your password?"
msgstr "మీ సంకేతపదానà±à°¨à°¿ మరà±à°šà°¿à°ªà±‹à°¯à°¾à°°à°¾?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
@@ -995,7 +1155,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1008,8 +1168,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1017,39 +1177,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1073,7 +1233,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1105,26 +1265,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1148,15 +1308,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr ""
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1175,11 +1335,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1202,30 +1362,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1233,25 +1389,29 @@ msgstr ""
msgid "Media processing panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1305,7 +1465,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1396,13 +1556,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1420,6 +1580,47 @@ msgstr "మారà±à°ªà±à°²à°¨à± à°­à°¦à±à°°à°ªà°°à°šà±"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1445,7 +1646,7 @@ msgstr ""
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1499,19 +1700,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1524,38 +1712,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1563,70 +1751,70 @@ msgstr ""
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1640,6 +1828,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1650,6 +1864,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1659,6 +1881,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1673,7 +1899,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1699,6 +1925,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1948,10 +2178,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1979,17 +2205,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2061,12 +2287,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2181,6 +2407,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2217,6 +2451,10 @@ msgstr ""
msgid "older"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2225,38 +2463,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2324,69 +2562,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/templates/en/mediagoblin.po b/mediagoblin/i18n/templates/en/mediagoblin.po
new file mode 100644
index 00000000..9c3b9c49
--- /dev/null
+++ b/mediagoblin/i18n/templates/en/mediagoblin.po
@@ -0,0 +1,2613 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-07-22 11:22+0300\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:449 mediagoblin/db/mixin.py:458
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:38 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:28
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:32
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:125
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch. Make sure to permit the setting of cookies for "
+"this domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:77
+#: mediagoblin/media_types/__init__.py:100
+#: mediagoblin/media_types/__init__.py:136
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:40
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:45 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:70
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:47
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:77 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:79
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:80 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:82
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:84 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:88
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:136
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:137
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:138
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy its URL"
+" and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, its thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid "An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a "
+"password set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:421
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:428
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:436
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:56
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:131
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing"
+" the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\t your web browser does not support HTML5\n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid "Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid "An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to"
+" be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:50
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:51
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:52
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:53
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:54
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:55
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were "
+"sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid "You are about to delete another user's collection. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/templates/mediagoblin.pot b/mediagoblin/i18n/templates/mediagoblin.pot
new file mode 100644
index 00000000..73885753
--- /dev/null
+++ b/mediagoblin/i18n/templates/mediagoblin.pot
@@ -0,0 +1,2614 @@
+# Translations template for PROJECT.
+# Copyright (C) 2016 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2016-03-29 12:03-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.1.1\n"
+
+#: mediagoblin/decorators.py:305 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:320
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:364 mediagoblin/plugins/ldap/views.py:59
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:454
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:409
+#: mediagoblin/edit/views.py:430 mediagoblin/plugins/basic_auth/views.py:111
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your "
+"profile, and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:521
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:522
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:524
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:525
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:526
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:527
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:528
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:529
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:530
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:532
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:533
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:535
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:536
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:537
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:538
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:539
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:540
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:541
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:545
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:546
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:547
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:548
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:549
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:550
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:566 mediagoblin/db/mixin.py:575
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:41 mediagoblin/edit/forms.py:106
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:38 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:64
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:110
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:45 mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:110 mediagoblin/submit/forms.py:68
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:49 mediagoblin/media_types/blog/forms.py:28
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:51 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54 mediagoblin/edit/forms.py:114
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:55 mediagoblin/edit/forms.py:115
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:56
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60 mediagoblin/media_types/blog/forms.py:32
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:67
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:73
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:75
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:76
+msgid "www.example.com, http://www.example.com or https://www.example.com"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:79
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:84
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:86
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:88
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:94
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/submit/forms.py:67
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:116
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:125 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:128 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:136
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:140 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:142
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:174
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:175
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:328
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:364 mediagoblin/submit/views.py:147
+#: mediagoblin/user_pages/views.py:263
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:368
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:383
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:424
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:460 mediagoblin/plugins/basic_auth/views.py:201
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:41
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:47
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:50
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:55
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:72
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:83
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:124
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:150
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure "
+"it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:175
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:177
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie "
+"blocker or somesuch. Make sure to permit the setting of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:77
+#: mediagoblin/media_types/__init__.py:100
+#: mediagoblin/media_types/__init__.py:136
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:40
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:45 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:90
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:324
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:330
+#: mediagoblin/user_pages/views.py:352
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:337
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:348
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:47
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:60 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:77 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:99
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:80 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:102
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:84 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:108
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:136
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:137
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:138
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy its URL"
+" and\n"
+" then paste it into a new line in the text box above. There should "
+"be only\n"
+" one url per line. The url that you paste into the text box should "
+"be under\n"
+" the header describing how prominent a feature it will be (whether "
+"Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to "
+"feature are\n"
+" inside the text box, click the Submit Query button, and your media "
+"should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the"
+" piece\n"
+" of media you would like to feature or unfeature and look at the "
+"bar to\n"
+" the side of the media entry. If the piece of media has not been "
+"featured\n"
+" yet you should see a button that says \"Feature\". Press that "
+"button and\n"
+" the media will be featured as a Primary Feature at the top of the"
+" page.\n"
+" All other featured media entries will remain as features, but "
+"will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is "
+"currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and"
+" \"Demote\"\n"
+" where previously there was the button which said \"Feature\". "
+"Click\n"
+" Unfeature and that media entry will no longer be displayed on the"
+"\n"
+" front page, although you can feature it again at any point. "
+"Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and "
+"makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on "
+"your\n"
+" front page. Primary Features are placed at the top of the front "
+"page and are\n"
+" much larger. Next are Secondary Features, which are slightly "
+"smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br "
+"/><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than "
+"Secondary\n"
+" Features, and Secondary Features can display longer descriptions "
+"than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, its thumbnail "
+"and a\n"
+" portion of its description will be displayed on your website's "
+"front page.\n"
+" The number of characters displayed varies on the prominence of the "
+"feature.\n"
+" Primary Features display the first 512 characters of their "
+"description,\n"
+" Secondary Features display the first 256 characters of their "
+"description,\n"
+" and Tertiary Features display the first 128 characters of their "
+"description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and "
+"then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware "
+"that if\n"
+" you make a typo, once you press Submit Query, your media entry will"
+" NOT be\n"
+" featured. Make sure that all your intended Media Entries are "
+"featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the "
+"button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be "
+"sure to\n"
+" have media featured as long as your instance has the "
+"'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be "
+"found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management "
+"panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:69
+msgid "An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:76
+msgid ""
+"Could not send password recovery email as your username is inactive or "
+"your account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:124
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:140
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:164
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:216
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:128
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a "
+"password set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid "Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:423
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:430
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:438
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/forms.py:54 mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:55 mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/submit/views.py:69
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:153
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:103
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:110
+#: mediagoblin/templates/mediagoblin/base.html:118
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:137
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:148
+#: mediagoblin/templates/mediagoblin/base.html:171
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:23
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:158
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:161
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:80
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:164
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:169
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:179
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a"
+" href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
+"an extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your"
+" MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" "
+"href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your "
+"own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:206
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:222
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:228
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing"
+" the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:25
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:58
+#: mediagoblin/templates/mediagoblin/moderation/report.html:121
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:148
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:183
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:42
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then"
+" \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can "
+"ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:42
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\t your web browser does not support HTML5\n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"We recommend you install a <a "
+"href=\"https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats"
+"\">freedom-respecting browser which supports free formats</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid "Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:108
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:78
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:109
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:80
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:63
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:81
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:82
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:103
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:111
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:123
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:164
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:84
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:93
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:103
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:134
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:138
+#: mediagoblin/templates/mediagoblin/moderation/report.html:158
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:150
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:152
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:160
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them."
+"\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:150
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at "
+"%(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:31
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:93
+msgid "You have not uploaded anything yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:54
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:66
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:75
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:73
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid "An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to"
+" be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can "
+"<a href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're "
+"sure the address is correct, maybe the page you're looking for has been "
+"moved or deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:50
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:51
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:52
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:53
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:54
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:55
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:209
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:244
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:303
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:309
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:340
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:359
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:432
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:436
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:444
+msgid ""
+"You are about to delete an item from another user's collection. Proceed "
+"with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:480
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:487
+msgid ""
+"The collection was not deleted because you didn't check that you were "
+"sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:495
+msgid "You are about to delete another user's collection. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 2c1f68d1..00000000
--- a/mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/tr/mediagoblin.po
index c82bd819..c82bd819 100644
--- a/mediagoblin/i18n/tr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/tr/mediagoblin.po
diff --git a/mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 3e794df0..00000000
--- a/mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/tr_TR/mediagoblin.po
index 47891f89..ea954a81 100644
--- a/mediagoblin/i18n/tr_TR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/tr_TR/mediagoblin.po
@@ -1,15 +1,17 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Berker Peksag <berker.peksag@gmail.com>, 2014
# Caner BaÅŸaran <basaran.caner@gmail.com>, 2013
+# Volkan Gezer <volkangezer@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/mediagoblin/language/tr_TR/)\n"
"MIME-Version: 1.0\n"
@@ -19,70 +21,174 @@ msgstr ""
"Language: tr_TR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "Üzgünüz, bu durumda kayıt devre dışıdır."
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
-msgstr ""
+msgstr "Üzgünüz, bu örnekte bildirme devre dışı."
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "Maalesef, bu isimde bir kullanıcı mevcut."
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "Üzgünüz, bu e-posta adresine sahip bir kullanıcı zaten var."
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "E-posta adresiniz doğrulandı. Şimdi giriş yapabilir, profilinizi düzenleyip ve yeni görüntüleri gönderebilirsiniz!"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "Doğrulama anahtarı veya kullanıcı kimliği yanlış"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "Zaten e-posta adresinizi doğruladınız!"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "Doğrulama e-postasını tekrar yolla."
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Başlık"
@@ -91,7 +197,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -107,11 +213,11 @@ msgstr "Etiketler"
msgid "Separate tags by commas."
msgstr "Etikerleri virgül ile ayırın."
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -125,7 +231,7 @@ msgstr ""
#: mediagoblin/submit/forms.py:50
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Lisans"
#: mediagoblin/edit/forms.py:54
msgid "Bio"
@@ -139,125 +245,137 @@ msgstr "Web sitesi"
msgid "This address contains errors"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "Medyama birisi yorum yazdığında bana e-posta at"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
-msgstr ""
+msgstr "Lisans tercihi"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "Eski parola"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "Yeni parola"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
-msgstr ""
+msgstr "Yeni e-posta adresi"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "Parola"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "Başka bir kullanıcının medyasını düzenlerken dikkatli davranın."
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
-msgstr ""
+msgstr "Sadece kendi profilinizi düzenleyebilirsiniz."
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Başka bir kullanıcının profilini düzenlerken dikkatli davranın."
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "Profil deÄŸiÅŸiklikleri kaydedildi"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "Hesap ayarları kaydedildi"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
-msgstr ""
+msgstr "E-posta adresiniz doğrulandı."
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "Yanlış parola"
@@ -288,7 +406,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -296,60 +414,60 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
-msgstr ""
+msgstr "'{username}' adında bir kullanıcı kayıtlı değil."
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
-msgstr ""
+msgstr "{files_attempted} dosyadan {files_uploaded} tanesi başarıyla gönderildi."
#: mediagoblin/meddleware/csrf.py:134
msgid ""
@@ -367,54 +485,54 @@ msgstr "Üzgünüz, bu tip dosyaları desteklemiyoruz :("
#: mediagoblin/media_types/blog/forms.py:35
#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "Açıklama"
#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Bunu silmek için eminim"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "Hoooop! Gönderildi!"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Medya silinmedi çünkü emin olduğunuzu onaylamadınız."
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
msgid "Add Blog Post"
-msgstr ""
+msgstr "Yeni Blog Ekle"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
msgid "Edit Blog"
-msgstr ""
+msgstr "Blog Düzenle"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
msgid "Delete Blog"
-msgstr ""
+msgstr "Blog Sil"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "Düzenle"
@@ -424,7 +542,7 @@ msgstr "Düzenle"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "Si"
@@ -459,7 +577,7 @@ msgstr "İptal"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Delete permanently"
-msgstr ""
+msgstr "Kalıcı olarak sil"
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
msgid "Create/Edit a Blog"
@@ -513,7 +631,7 @@ msgstr ""
#: mediagoblin/moderation/forms.py:22
msgid "Ban the user"
-msgstr ""
+msgstr "Kullanıcıyı engelle"
#: mediagoblin/moderation/forms.py:23
msgid "Send the user a message"
@@ -539,7 +657,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "süresiz"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -557,26 +726,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -631,7 +800,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -696,7 +865,7 @@ msgstr ""
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
msgid "CAUTION:"
-msgstr ""
+msgstr "DİKKAT:"
#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
msgid ""
@@ -760,23 +929,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -882,11 +1048,11 @@ msgstr "Parolanız başarılı bir şekilde değiştirildi"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "Yeni parolanı gir"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "Parolanı gir"
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
@@ -924,11 +1090,7 @@ msgstr ""
msgid "Forgot your password?"
msgstr "Parolanı mı unuttun?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
@@ -955,7 +1117,7 @@ msgstr ""
#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "İsim"
#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
@@ -995,7 +1157,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1008,48 +1170,48 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
#: mediagoblin/plugins/openid/forms.py:38
msgid "OpenID"
-msgstr ""
+msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1073,7 +1235,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1105,26 +1267,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1148,15 +1310,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "Bu medya türü için geçersiz dosya türü."
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1175,11 +1337,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "Bir dosya sağlamanız gerekir."
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1202,30 +1364,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "E-postanızı doğrulayın!"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "çıkış"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "Hesap ayarlarını değiştir"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1233,25 +1391,29 @@ msgstr "Hesap ayarlarını değiştir"
msgid "Media processing panel"
msgstr "Medya iÅŸlem paneli"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "Çıkış"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "Medya ekle"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1305,7 +1467,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1345,7 +1507,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
msgid "Terms of Service"
-msgstr ""
+msgstr "Kullanıcı Sözleşmesi"
#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
msgid "Explore"
@@ -1396,13 +1558,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
-msgstr ""
+msgstr "Ekler"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1420,6 +1582,47 @@ msgstr "DeÄŸiÅŸiklikleri kaydet"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s önce"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1445,14 +1648,14 @@ msgstr ""
msgid "Delete my account"
msgstr "Hesabımı sil"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
-msgstr ""
+msgstr "E-posta"
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+msgstr "%(collection_title)s düzenleniyor"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
@@ -1497,20 +1700,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
msgid "New comments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s önce"
+msgstr "Yeni yorumlar"
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
@@ -1524,38 +1714,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "İndir"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "Özgün"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "Özgün dosya"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1563,70 +1753,70 @@ msgstr ""
msgid "Created"
msgstr "OluÅŸturuldu"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF dosya"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "Dosya Biçimi"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1640,6 +1830,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr "Kullanıcı"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1650,6 +1866,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1659,6 +1883,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1673,7 +1901,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1699,6 +1927,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1711,7 +1943,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:149
msgid "Status"
-msgstr ""
+msgstr "Durum"
#: mediagoblin/templates/mediagoblin/moderation/report.html:151
msgid "RESOLVED"
@@ -1918,11 +2150,11 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user.html:180
msgid "Yes"
-msgstr ""
+msgstr "Evet"
#: mediagoblin/templates/mediagoblin/moderation/user.html:182
msgid "No"
-msgstr ""
+msgstr "Hayır"
#: mediagoblin/templates/mediagoblin/moderation/user.html:213
msgid "Ban User"
@@ -1948,17 +2180,13 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
msgid "# of Comments Posted"
-msgstr ""
+msgstr "Yorum Sayısı"
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
msgid "No users found."
@@ -1979,17 +2207,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "Bir yorum ekle"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "Bu yorumu ekle"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "Eklendi"
@@ -2061,14 +2289,14 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a> medyası"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
-msgstr ""
+msgstr "Yorum önizlemesi"
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
@@ -2181,6 +2409,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2217,6 +2453,10 @@ msgstr ""
msgid "older"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "Konum"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2225,38 +2465,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "Amaninnn boo!"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2324,69 +2564,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "Maalesef, yorum devre dışı."
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "Amaninnn boo, yorumunuz boÅŸtu."
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "Yorumunuz gönderildi!"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "Medyayı sildiniz."
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Başka bir kullanıcının medyasını silerken dikkatli davranın."
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/uz@Latn/mediagoblin.po b/mediagoblin/i18n/uz@Latn/mediagoblin.po
new file mode 100644
index 00000000..6499f2c6
--- /dev/null
+++ b/mediagoblin/i18n/uz@Latn/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Uzbek (Latin) (http://www.transifex.com/projects/p/mediagoblin/language/uz@Latn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: uz@Latn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the setting of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index f1b5b744..00000000
--- a/mediagoblin/i18n/vi/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/vi/mediagoblin.po b/mediagoblin/i18n/vi/mediagoblin.po
new file mode 100644
index 00000000..d321ff8f
--- /dev/null
+++ b/mediagoblin/i18n/vi/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Vietnamese (http://www.transifex.com/projects/p/mediagoblin/language/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 9565ed54..00000000
--- a/mediagoblin/i18n/vi_VN/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/vi_VN/mediagoblin.po b/mediagoblin/i18n/vi_VN/mediagoblin.po
new file mode 100644
index 00000000..ecf299ad
--- /dev/null
+++ b/mediagoblin/i18n/vi_VN/mediagoblin.po
@@ -0,0 +1,2629 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/mediagoblin/language/vi_VN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: vi_VN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:319
+msgid "Sorry, reporting is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
+msgid "Sorry, authentication is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:45
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:46
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:47
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:118
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
+msgid "The verification key or user id is incorrect."
+msgstr ""
+
+#: mediagoblin/auth/views.py:164
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:170
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:188
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:196
+msgid "You've already verified your email address!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:206
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
+#: mediagoblin/media_types/blog/forms.py:24
+#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:40
+msgid "Description of this work"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:37 mediagoblin/media_types/blog/forms.py:27
+#: mediagoblin/submit/forms.py:45
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/submit/forms.py:47
+msgid "Separate tags by commas."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:44
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:48 mediagoblin/media_types/blog/forms.py:29
+#: mediagoblin/submit/forms.py:50
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:54
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:60
+msgid "Website"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:62
+msgid "This address contains errors"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
+msgid "Email me when others comment on my media"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:70
+msgid "Enable insite notifications about events."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:72
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:78
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:91
+msgid "The title can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
+#: mediagoblin/user_pages/forms.py:48
+msgid "Description of this collection"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:100
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
+msgid "Old password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
+msgid "Enter your old password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
+msgid "New password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:120
+msgid "New email address"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/plugins/basic_auth/forms.py:43
+#: mediagoblin/plugins/ldap/forms.py:39
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
+msgid "Password"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:126
+msgid "Enter your password to prove you own this account."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:156
+msgid "Identifier"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:157
+msgid "Value"
+msgstr ""
+
+#: mediagoblin/edit/views.py:80
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:98
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:168
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:195
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:201
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:232
+msgid "Profile changes saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:265
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
+#, python-format
+msgid "You already have a collection called \"%s\"!"
+msgstr ""
+
+#: mediagoblin/edit/views.py:367
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:382
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:423
+msgid "Your email address has been verified."
+msgstr ""
+
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:60
+msgid "Cannot link theme... no theme set\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:73
+msgid "No asset directory for this theme\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:76
+msgid "However, old link directory symlink found; removed.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:112
+#, python-format
+msgid "Could not link \"%s\": %s exists and is not a symlink\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:119
+#, python-format
+msgid "Skipping \"%s\"; already set up.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/assetlink.py:124
+#, python-format
+msgid "Old link found for \"%s\"; removing.\n"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
+msgid ""
+"For more information about how to properly run this\n"
+"script (and how to format the metadata csv file), read the MediaGoblin\n"
+"documentation page on command line uploading\n"
+"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
+msgid "Name of user these media entries belong to"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
+msgid "Path to the csv file containing metadata information."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
+msgid "Don't process eagerly, pass off to celery"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
+msgid "Sorry, no user by username '{username}' exists"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
+msgid "File at {path} not found, use -h flag for help"
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
+msgid ""
+"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
+"Metadata was not uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
+msgid ""
+"FAIL: Local file {filename} could not be accessed.\n"
+"{filename} will not be uploaded."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
+msgid ""
+"Successfully submitted {filename}!\n"
+"Be sure to look at the Media Processing Panel on your website to be sure it\n"
+"uploaded successfully."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
+msgid "FAIL: This file is larger than the upload limits for this site."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
+msgid "FAIL: This file will put this user past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
+msgid "FAIL: This user is already past their upload limits."
+msgstr ""
+
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
+msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
+msgstr ""
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"domain."
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:79
+#: mediagoblin/media_types/__init__.py:101
+msgid "Sorry, I don't support that file type :("
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:26
+#: mediagoblin/media_types/blog/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr ""
+
+#: mediagoblin/media_types/blog/forms.py:40 mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:200
+msgid "Woohoo! edited blogpost is submitted"
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:322
+msgid "You deleted the Blog."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
+msgid "The media was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:335
+msgid "You are about to delete another user's Blog. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/media_types/blog/views.py:346
+msgid "The blog was not deleted because you have no rights."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:43
+msgid "Add Blog Post"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:50
+msgid "Edit Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:57
+msgid "Delete Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:92
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
+msgid "Edit"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:93
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:39
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
+msgid "Delete"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:102
+msgid "<em> Go to list view </em>"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html:104
+msgid " No blog post yet. "
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_confirm_delete.html:48
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:26
+msgid "Create/Edit a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_edit_create.html:37
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:39
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:23
+msgid "Create/Edit a blog post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_edit_create.html:29
+msgid "Create/Edit a Blog Post."
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html:24
+#, python-format
+msgid "%(blog_owner_name)s's Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:46
+msgid "View"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html:65
+msgid "Create a Blog"
+msgstr ""
+
+#: mediagoblin/media_types/blog/templates/mediagoblin/blog/url_to_dashboard.html:20
+msgid " Blog Dashboard "
+msgstr ""
+
+#: mediagoblin/media_types/pdf/processing.py:142
+msgid "unoconv failing to run, check log file"
+msgstr ""
+
+#: mediagoblin/media_types/video/processing.py:44
+msgid "Video transcoding failed"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:21
+msgid "Take away privilege"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:22
+msgid "Ban the user"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:23
+msgid "Send the user a message"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:24
+msgid "Delete the content"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:53 mediagoblin/moderation/forms.py:118
+msgid "User will be banned until:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:57
+msgid "Why are you banning this User?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:109
+msgid "What action will you take to resolve the report?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:115
+msgid "What privileges will you take away?"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
+msgid "Warning from"
+msgstr ""
+
+#: mediagoblin/notifications/tools.py:54 mediagoblin/user_pages/lib.py:60
+msgid "commented on your post"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:35
+#, python-format
+msgid "Subscribed to comments on %s!"
+msgstr ""
+
+#: mediagoblin/notifications/views.py:48
+#, python-format
+msgid "You will not receive notifications for comments on %s."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:239
+msgid "Must provide an oauth_token."
+msgstr ""
+
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
+msgid "No request token found."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
+msgid "Sorry, the file size is too big."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
+msgid "Sorry, uploading this file will put you over your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
+msgid "Sorry, you have reached your upload limit."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/forms.py:21
+msgid "Enter the URL for the media to be featured"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:132
+msgid "Primary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:133
+msgid "Secondary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:134
+msgid "Tertiary"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/tools.py:135
+msgid "-----------{display_type}-Features---------------------------\n"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:33
+msgid "How does this work?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:34
+msgid "How to feature media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:37
+msgid ""
+"\n"
+" Go to the page of the media entry you want to feature. Copy it's URL and\n"
+" then paste it into a new line in the text box above. There should be only\n"
+" one url per line. The url that you paste into the text box should be under\n"
+" the header describing how prominent a feature it will be (whether Primary,\n"
+" Secondary, or Tertiary). Once all of the media that you want to feature are\n"
+" inside the text box, click the Submit Query button, and your media should be\n"
+" displayed on the front page.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:48
+msgid "Is there another way to manage featured media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:51
+msgid ""
+"\n"
+" Yes. If you would prefer, you may go to the media homepage of the piece\n"
+" of media you would like to feature or unfeature and look at the bar to\n"
+" the side of the media entry. If the piece of media has not been featured\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
+" the media will be featured as a Primary Feature at the top of the page.\n"
+" All other featured media entries will remain as features, but will be\n"
+" pushed further down the page.<br /><br />\n"
+"\n"
+" If you go to the media homepage of a piece of media that is currently\n"
+" featured, you will see the options \"Unfeature\", \"Promote\" and \"Demote\"\n"
+" where previously there was the button which said \"Feature\". Click\n"
+" Unfeature and that media entry will no longer be displayed on the\n"
+" front page, although you can feature it again at any point. Promote\n"
+" moves the featured media higher up on the page and makes it more\n"
+" prominent and Demote moves the featured media lower down and makes it\n"
+" less prominent.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:70
+msgid "What is a Primary Feature? What is a Secondary Feature?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:74
+msgid ""
+"\n"
+" These categories just describe how prominent a feature will be on your\n"
+" front page. Primary Features are placed at the top of the front page and are\n"
+" much larger. Next are Secondary Features, which are slightly smaller.\n"
+" Tertiary Features make up a grid at the bottom of the page.<br /><br />\n"
+"\n"
+" Primary Features also can display longer descriptions than Secondary\n"
+" Features, and Secondary Features can display longer descriptions than\n"
+" Tertiary Features."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:85
+msgid ""
+"How to decide what information is displayed when a media entry is\n"
+" featured?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:88
+msgid ""
+"\n"
+" When a media entry is featured, the entry's title, it's thumbnail and a\n"
+" portion of its description will be displayed on your website's front page.\n"
+" The number of characters displayed varies on the prominence of the feature.\n"
+" Primary Features display the first 512 characters of their description,\n"
+" Secondary Features display the first 256 characters of their description,\n"
+" and Tertiary Features display the first 128 characters of their description.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:98
+msgid "How to unfeature a piece of media?"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:102
+msgid ""
+"\n"
+" Unfeature a media by removing its line from the above textarea and then\n"
+" pressing the Submit Query button.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:108
+msgid "CAUTION:"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature.html:110
+msgid ""
+"\n"
+" When copying and pasting urls into the above text box, be aware that if\n"
+" you make a typo, once you press Submit Query, your media entry will NOT be\n"
+" featured. Make sure that all your intended Media Entries are featured.\n"
+" "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:26
+msgid ""
+"\n"
+"Feature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:28
+msgid "Feature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:34
+msgid ""
+"\n"
+"Unfeature Media "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:36
+msgid "Unfeature"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:42
+msgid ""
+"\n"
+"Promote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:44
+msgid "Promote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:50
+msgid ""
+"\n"
+"Demote Feature "
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html:52
+msgid "Demote"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/recent_media.html:30
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid "Most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:61
+msgid "Nothing is currently featured."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:62
+msgid ""
+"If you would like to feature a\n"
+" piece of media, go to that media entry's homepage and click the button\n"
+" that says <a class=\"button_action\">Feature</a>."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
+msgid ""
+"You're seeing this page because you are a user capable of\n"
+" featuring media, a regular user would see a blank page, so be sure to\n"
+" have media featured as long as your instance has the 'archivalook'\n"
+" plugin enabled. A more advanced tool to manage features can be found\n"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
+msgid "View most recent media"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/bits/feature_dropdown.html:22
+msgid "Feature management panel"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:43
+msgid ""
+"Sorry, this audio will not work because\n"
+"\tyour web browser does not support HTML5\n"
+"\taudio."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_primary.html:46
+msgid ""
+"You can get a modern web browser that\n"
+"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:43
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:43
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_primary.html:46
+#: mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/video_secondary.html:46
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:24
+#: mediagoblin/plugins/ldap/forms.py:35 mediagoblin/plugins/openid/forms.py:27
+#: mediagoblin/plugins/persona/forms.py:24
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:76
+msgid "Username"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:32
+#: mediagoblin/plugins/ldap/forms.py:28 mediagoblin/plugins/openid/forms.py:31
+#: mediagoblin/plugins/persona/forms.py:28
+#: mediagoblin/plugins/persona/forms.py:39
+msgid "Email address"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:39
+msgid "Username or Email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:46
+msgid "Stay logged in"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/forms.py:51
+msgid "Username or email"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:54
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:65
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:68
+msgid ""
+"An email has been sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:75
+msgid ""
+"Could not send password recovery email as your username is inactive or your "
+"account's email address has not been verified."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:123
+msgid "The user id is incorrect."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:139
+msgid "You can now log in using your new password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:163
+msgid ""
+"You are no longer an active user. Please contact the system admin to "
+"reactivate your account."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/views.py:215
+msgid "Your password was changed successfully"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:36
+msgid "Set your new password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_fp.html:39
+msgid "Set password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:28
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:38
+#, python-format
+msgid "Changing %(username)s's password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/change_pass.html:45
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:40
+msgid "Save"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:22
+msgid "Don't have an account yet?"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/create_account_link.html:24
+msgid "Create one here!"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/edit_link.html:22
+msgid "Change your password."
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:23
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:31
+msgid "Recover password"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr ""
+
+#: mediagoblin/plugins/basic_auth/templates/mediagoblin/plugins/basic_auth/fp_link.html:22
+msgid "Forgot your password?"
+msgstr ""
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr ""
+
+#: mediagoblin/plugins/ldap/templates/mediagoblin/plugins/ldap/create_account_link.html:22
+msgid "Sign in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:22
+msgid "Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html:40
+msgid "Edit Metadata"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"<strong>Confidential</strong> - The client can\n"
+" make requests to the GNU MediaGoblin instance that can not be\n"
+" intercepted by the user agent (e.g. server-side client).<br />\n"
+" <strong>Public</strong> - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is <strong>required</strong> for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/views.py:57
+msgid "The client {0} has been registered!"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/openid/__init__.py:97
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
+msgid "Sorry, an account is already registered to that OpenID."
+msgstr ""
+
+#: mediagoblin/plugins/openid/forms.py:38
+msgid "OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:51
+msgid "Sorry, the OpenID server could not be found"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:64
+#, python-format
+msgid "No OpenID service was found for %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:109
+#, python-format
+msgid "Verification of %s failed: %s"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:120
+msgid "Verification cancelled"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:317
+msgid "Your OpenID url was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
+msgid "You can't delete your only OpenID URL unless you have a password set"
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
+msgid "That OpenID is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/openid/views.py:388
+msgid "OpenID was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:31
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:34
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:23
+msgid "Add an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/add.html:34
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:23
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/delete.html:31
+msgid "Delete an OpenID"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/edit_link.html:21
+msgid "OpenID's"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
+#: mediagoblin/templates/mediagoblin/base.html:124
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:47
+msgid "Log in"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:39
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:44
+msgid "Log in to create an account!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:51
+msgid "Or login with a password!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login_link.html:23
+msgid "Or login with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/register_link.html:23
+msgid "Or register with OpenID!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/__init__.py:90
+msgid "Sorry, an account is already registered to that Persona email."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:140
+msgid "The Persona email address was successfully removed."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:146
+msgid ""
+"You can't delete your only Persona email address unless you have a password "
+"set."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:151
+msgid "That Persona email address is not registered to this account."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:178
+msgid ""
+"Sorry, an account is already registered with that Persona email address."
+msgstr ""
+
+#: mediagoblin/plugins/persona/views.py:194
+msgid "Your Persona email address was saved successfully."
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:31
+msgid "Delete a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:34
+msgid "Add a Persona email address"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit_link.html:21
+msgid "Persona's"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/login_link.html:22
+msgid "Or login with Persona!"
+msgstr ""
+
+#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/register_link.html:22
+msgid "Or register with Persona!"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:422
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:429
+msgid "Copying to public storage failed."
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:437
+msgid "An acceptable processing file was not found"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:30
+msgid "Max file size: {0} mb"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:34
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/forms.py:41
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/submit/views.py:57
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:140
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:20
+msgid "You are Banned."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:26
+msgid "You have been banned"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/banned.html:28
+#, python-format
+msgid "until %(until_when)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:133
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:140
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:154
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:160
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
+msgid "User management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:175
+msgid "Report management panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:21
+msgid "Authorization"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:26
+#: mediagoblin/templates/mediagoblin/api/authorize.html:53
+msgid "Authorize"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:29
+msgid "You are logged in as"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:33
+msgid "Do you want to authorize "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:37
+msgid "an unknown application"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:39
+msgid " to access your account? "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:41
+msgid "Applications with access to your account can: "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:43
+msgid "Post new media as you"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:44
+msgid "See your information (e.g profile, media, etc...)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/authorize.html:45
+msgid "Change your information"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:21
+msgid "Authorization Finished"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:26
+msgid "Authorization Complete"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/api/oob.html:28
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:41
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:21
+#, python-format
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:24
+#, python-format
+msgid ""
+"Released under the <a "
+"href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a "
+"href=\"%(source_link)s\">Source code</a> available."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/base_footer.html:30
+msgid "Terms of Service"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:20
+msgid "Explore"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:24
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:25
+msgid ""
+"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
+"extraordinarily great piece of media hosting software."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:27
+msgid ""
+"To add your own media, place comments, and more, you can log in with your "
+"MediaGoblin account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:29
+msgid "Don't have one yet? It's easy!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:36
+msgid ""
+"\n"
+" >Create an account at this site</a>\n"
+" or"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html:42
+msgid ""
+"\n"
+" <a class=\"button_action\" href=\"http://mediagoblin.readthedocs.org/\">Set up MediaGoblin on your own server</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
+msgid "Attachments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:23
+#: mediagoblin/templates/mediagoblin/edit/change_email.html:33
+#, python-format
+msgid "Changing %(username)s's email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit.html:35
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:54
+msgid "Delete my account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
+msgid "Email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
+#, python-format
+msgid "Editing %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:67
+#, python-format
+msgid "Metadata for \"%(media_name)s\""
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:72
+msgid "MetaData"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:80
+msgid "Add new Row"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:83
+msgid "Update Metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/metadata.html:87
+msgid "Clear empty Rows"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/verification.txt:19
+#, python-format
+msgid ""
+"Hi,\n"
+"\n"
+"We wanted to verify that you are %(username)s. If this is the case, then \n"
+"please follow the link below to verify your new email address.\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you are not %(username)s or didn't request an email change, you can ignore\n"
+"this email."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:4
+msgid "New comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
+msgid "Mark all read"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
+msgid "Download"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
+msgid "Original"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
+msgid ""
+"Sorry, this audio will not work because \n"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
+msgid ""
+"You can get a modern web browser that \n"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
+msgid "Original file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
+msgid "WebM file (Vorbis codec)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:36
+msgid "Created"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
+msgid "PDF file"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
+msgid "WebM file (VP8/Vorbis)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:30
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:33
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:62
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:93
+msgid "Last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:27
+msgid "Sorry, no such report found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:33
+msgid "Return to Reports Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
+msgid "Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:38
+msgid "Reported comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:83
+#, python-format
+msgid ""
+"\n"
+" â– Reported media by <a href=\"%(user_url)s\">%(user_name)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:92
+#, python-format
+msgid ""
+"\n"
+" CONTENT BY\n"
+" <a href=\"%(user_url)s\"> %(user_name)s</a>\n"
+" HAS BEEN DELETED\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:133
+#: mediagoblin/templates/mediagoblin/moderation/user.html:136
+msgid "Resolve"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:137
+#: mediagoblin/templates/mediagoblin/moderation/report.html:157
+msgid "Resolve This Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:149
+msgid "Status"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:151
+msgid "RESOLVED"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report.html:159
+msgid "You cannot take action against an administrator"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:22
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:27
+msgid "Report panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:30
+msgid ""
+"\n"
+" Here you can look up open reports that have been filed by users.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:35
+msgid "Active Reports Filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:77
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:173
+msgid "Offender"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:78
+msgid "When Reported"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:79
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:175
+msgid "Reported By"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:80
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:176
+msgid "Reason"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:95
+#, python-format
+msgid ""
+"\n"
+" Comment Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:111
+#, python-format
+msgid ""
+"\n"
+" Media Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:125
+msgid "No open reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:127
+msgid "Closed Reports"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:172
+msgid "Resolved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:174
+msgid "Action Taken"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:188
+#, python-format
+msgid ""
+"\n"
+" Closed Report #%(report_id)s\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/report_panel.html:202
+msgid "No closed reports found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:23
+#, python-format
+msgid "User: %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:42
+msgid "Return to Users Panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:49
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:40
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:60
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:55
+msgid ""
+"Someone has registered an account with this username, but it still has\n"
+" to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:25
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:68
+#, python-format
+msgid "BANNED until %(expiration_date)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:72
+msgid "Banned Indefinitely"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:78
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:89
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:74
+msgid "Edit profile"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:81
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:105
+#, python-format
+msgid "Active Reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:112
+msgid "Report ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:113
+msgid "Reported Content"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:114
+msgid "Description of Report"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:122
+#, python-format
+msgid "Report #%(report_number)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:129
+msgid "Reported Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:131
+msgid "Reported Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:142
+#, python-format
+msgid "No active reports filed on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:150
+#, python-format
+msgid "All reports on %(username)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:155
+#, python-format
+msgid "All reports that %(username)s has filed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:164
+#, python-format
+msgid "%(username)s's Privileges"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:172
+msgid "Privilege"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:173
+msgid "Granted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:180
+msgid "Yes"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:182
+msgid "No"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:213
+msgid "Ban User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user.html:218
+msgid "UnBan User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:21
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:26
+msgid "User panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:29
+msgid ""
+"\n"
+" Here you can look up users in order to take punitive actions on them.\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:34
+msgid "Active Users"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
+msgid "When Joined"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:78
+msgid "# of Comments Posted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:95
+msgid "No users found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:28
+#: mediagoblin/templates/mediagoblin/submit/start.html:35
+msgid "Add your media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:38
+#, python-format
+msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
+msgid "Add a comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
+msgid "Add this comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
+msgid "Added"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:23
+#, python-format
+msgid "Delete collection %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:38
+#, python-format
+msgid "Really delete collection: %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:23
+#, python-format
+msgid "Remove %(media_title)s from %(collection_title)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:39
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:62
+msgid "Remove"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"<a href=\"%(user_url)s\">%(username)s</a>'s media with tag <a "
+"href=\"%(tag_url)s\">%(tag)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
+#, python-format
+msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
+msgid "Comment Preview"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:21
+msgid "<h2>File a Report</h2>"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:24
+msgid "Reporting this Comment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:60
+msgid "Reporting this Media Entry"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:72
+#, python-format
+msgid ""
+"\n"
+" â– Published by <a href=\"%(user_url)s\"\n"
+" class=\"comment_authorlink\">%(username)s</a>\n"
+" "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:81
+msgid "File Report "
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Here's a spot to tell others about yourself."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:94
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:84
+#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:70
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:43
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:48
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:52
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:55
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:63
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user_nonactive.html:68
+#, python-format
+msgid ""
+"If you are that person but you've lost your verification email, you can <a "
+"href=\"%(login_url)s\">log in</a> and resend it."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "↠Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/report.html:25
+msgid "Report media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr ""
+
+#: mediagoblin/tools/exif.py:83
+msgid "Could not read the image file."
+msgstr ""
+
+#: mediagoblin/tools/response.py:40
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:41
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:55
+msgid "Bad Request"
+msgstr ""
+
+#: mediagoblin/tools/response.py:57
+msgid "The request sent to the server is invalid, please double check it"
+msgstr ""
+
+#: mediagoblin/tools/response.py:65
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:66
+msgid ""
+"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr ""
+
+#: mediagoblin/tools/response.py:74
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:62
+msgid "year"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:63
+msgid "month"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:64
+msgid "week"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:65
+msgid "day"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:66
+msgid "hour"
+msgstr ""
+
+#: mediagoblin/tools/timesince.py:67
+msgid "minute"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a href=\"http://daringfireball.net/projects/markdown/basics\" "
+"target=\"_blank\">Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:49
+msgid ""
+"You can use\n"
+" <a href=\"http://daringfireball.net/projects/markdown/basics\" target=\"_blank\">\n"
+" Markdown</a> for formatting."
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:55 mediagoblin/user_pages/forms.py:61
+msgid "Reason for Reporting"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:191
+msgid "Sorry, comments are disabled."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:196
+msgid "Oops, your comment was empty."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:204
+msgid "Your comment has been posted!"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:278
+msgid "You have to select or add a collection"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:289
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:295
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:320
+msgid "You deleted the media."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:339
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:412
+msgid "You deleted the item from the collection."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:416
+msgid "The item was not removed because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:424
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:456
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:463
+msgid ""
+"The collection was not deleted because you didn't check that you were sure."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:471
+msgid ""
+"You are about to delete another user's collection. Proceed with caution."
+msgstr ""
diff --git a/mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 86f1ab75..00000000
--- a/mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_CN/mediagoblin.po
index 799199f1..5c5a5f4e 100644
--- a/mediagoblin/i18n/zh_CN/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_CN/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/mediagoblin/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
@@ -23,70 +23,174 @@ msgstr ""
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "æŠ±æ­‰ï¼Œæœ¬ç«™å·²æš‚åœæ³¨å†Œã€‚"
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "æ— æ•ˆç”¨æˆ·åæˆ–电å­é‚®ä»¶åœ°å€ã€‚"
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "此字段ä¸èƒ½å¡«å†™ç”µå­é‚®ä»¶åœ°å€ã€‚"
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "此字段需填写电å­é‚®ä»¶åœ°å€ã€‚"
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "抱歉,该用户å已存在。"
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "抱歉,已有用户用该电å­é‚®ä»¶æ³¨å†Œã€‚"
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "您的电å­é‚®ä»¶åœ°å€å·²è®¤è¯ã€‚您现在å¯ä»¥ç™»å½•ã€ä¿®æ”¹ä¸ªäººèµ„料并上传图片了ï¼"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "验è¯ç é”™è¯¯æˆ–用户 ID 错误"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "您必须登录以便让我们知é“将电å­é‚®ä»¶å‘ç»™è°"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "您已ç»è®¤è¯è¿‡ç”µå­é‚®ä»¶åœ°å€äº†ï¼"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "é‡å‘认è¯é‚®ä»¶ã€‚"
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "标题"
@@ -95,7 +199,7 @@ msgid "Description of this work"
msgstr "该作å“çš„æè¿°"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -111,11 +215,11 @@ msgstr "标签"
msgid "Separate tags by commas."
msgstr "用逗å·åˆ†é𔿠‡ç­¾ã€‚"
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "简称"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "简称ä¸èƒ½ä¸ºç©º"
@@ -143,125 +247,137 @@ msgstr "网站"
msgid "This address contains errors"
msgstr "本网å€å‡ºé”™äº†"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "当有人对我的媒体评论时给我电å­é‚®ä»¶"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "许å¯è¯å好"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "这将是您上传界é¢çš„默认许å¯è¯ã€‚"
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "标题ä¸èƒ½æ˜¯ç©ºçš„"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "这个åˆé›†çš„æè¿°"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "æ­¤åˆé›†ç½‘å€çš„æ ‡é¢˜éƒ¨ä»½ï¼Œé€šå¸¸ä¸éœ€è¦ä¿®æ”¹ã€‚"
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "旧的密ç "
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "è¾“å…¥æ‚¨çš„æ—§å¯†ç æ¥è¯æ˜Žæ‚¨æ‹¥æœ‰è¿™ä¸ªè´¦æˆ·ã€‚"
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "新密ç "
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "密ç "
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "这个简称已ç»è¢«åˆ«äººç”¨äº†"
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "您正在修改别人的媒体,请å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "您加上了附件“%sâ€ï¼"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "您åªèƒ½ä¿®æ”¹è‡ªå·±çš„个人资料"
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "您正在修改别人的个人资料,请å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "个人资料已修改"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "账户设置已ä¿å­˜"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "您需è¦ç¡®è®¤åˆ é™¤æ‚¨çš„账户。"
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "æ‚¨å·²ç»æœ‰ä¸€ä¸ªç§°åšâ€œ%sâ€çš„åˆé›†äº†ï¼"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "è¯¥ç”¨æˆ·å·²ç»æœ‰ä½¿ç”¨è¯¥ç®€ç§°çš„åˆé›†äº†ã€‚"
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "您正在修改别人的åˆé›†ï¼Œè¯·å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "密ç é”™è¯¯"
@@ -292,7 +408,7 @@ msgstr "跳过“%sâ€ï¼›å·²è®¾ç½®è¿‡äº†ã€‚\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "“%sâ€çš„æ—§é“¾æŽ¥å·²ç»æ‰¾åˆ°å¹¶ç§»é™¤ã€‚\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -300,58 +416,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -377,28 +493,28 @@ msgstr "æè¿°"
msgid "I am sure I want to delete this"
msgstr "我确定我è¦åˆ é™¤è¿™ä¸ªåª’体"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "啊哈ï¼å·²æäº¤ï¼"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "由于您没有勾选确认,该媒体没有被移除。"
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -418,7 +534,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "编辑"
@@ -428,7 +544,7 @@ msgstr "编辑"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "删除"
@@ -543,7 +659,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -561,26 +728,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -635,7 +802,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -764,23 +931,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -928,11 +1092,7 @@ msgstr "å‘逿‰¾å›žå¯†ç è¯´æ˜Ž"
msgid "Forgot your password?"
msgstr "忘了密ç å—?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "ä½ç½®"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "在 <a href=\"%(osm_url)s\">OpenStreetMap</a> 上观看"
@@ -999,7 +1159,7 @@ msgstr "此应用程åºçš„é‡å®šå‘ URI,本字段在公开类型的 OAuth clie
msgid "This field is required for public clients"
msgstr "本字段在公开类型的 OAuth client 为必填"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "OAuth client {0} 注册完æˆï¼"
@@ -1012,8 +1172,8 @@ msgid "Your OAuth clients"
msgstr "您的 OAuth client"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1021,39 +1181,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1077,7 +1237,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1109,26 +1269,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1152,15 +1312,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "æä¾›æ–‡ä»¶çš„媒体类型错误。"
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1179,11 +1339,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "您必须æä¾›ä¸€ä¸ªæ–‡ä»¶"
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "åˆé›†â€œ%sâ€å·²æ–°å¢žï¼"
@@ -1206,30 +1366,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "确认您的电å­é‚®ä»¶ï¼"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "<a href=\"%(user_url)s\">%(user_name)s</a> 的账户"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "更改账户设置"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1237,25 +1393,29 @@ msgstr "更改账户设置"
msgid "Media processing panel"
msgstr "媒体处ç†é¢æ¿"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "新增媒体"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "新增åˆé›†"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1309,7 +1469,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1400,13 +1560,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "编辑 %(media_title)s 的附件"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "附件"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "新增附件"
@@ -1424,6 +1584,47 @@ msgstr "ä¿å­˜æ›´æ”¹"
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)så‰"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1449,7 +1650,7 @@ msgstr "æ­£åœ¨æ”¹å˜ %(username)s 的账户设置"
msgid "Delete my account"
msgstr "åˆ é™¤æˆ‘çš„å¸æˆ·"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1503,19 +1704,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)så‰"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1528,38 +1716,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr "此媒体被标记为:%(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "下载"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "æºæ–‡ä»¶"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "抱歉,此声音无法播放,因为您的æµè§ˆå™¨ä¸æ”¯æŒ HTML5 音频。"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤å£°éŸ³çš„æµè§ˆå™¨ï¼"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "æºæ–‡ä»¶"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM 文件(Vorbis ç¼–ç ï¼‰"
@@ -1567,70 +1755,70 @@ msgstr "WebM 文件(Vorbis ç¼–ç ï¼‰"
msgid "Created"
msgstr "已创建"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr "%(media_title)s 的照片"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF 文件"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "é€è§†"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "æ­£é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "é¡¶é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "ä¾§é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "下载模型"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "文件格å¼"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "物体高度"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "抱歉,此视频无法播放,因为您的æµè§ˆå™¨ä¸æ”¯æŒ HTML5 视频。"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤è§†é¢‘çš„æµè§ˆå™¨ï¼"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1644,6 +1832,32 @@ msgstr "此处您å¯ä»¥è¿½è¸ªæœ¬ç«™ç‚¹å¤„ç†åª’体的状æ€ã€‚"
msgid "Media in-processing"
msgstr "媒体处ç†ä¸­"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1654,6 +1868,14 @@ msgstr "没有正在处ç†ä¸­çš„媒体"
msgid "These uploads failed to process:"
msgstr "无法处ç†è¿™äº›ä¸Šä¼ å†…容:"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1663,6 +1885,10 @@ msgstr "没有失败的纪录ï¼"
msgid "Last 10 successful uploads"
msgstr "最近 10 次æˆåŠŸä¸Šä¼ çš„çºªå½•"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1677,7 +1903,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1703,6 +1929,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1952,10 +2182,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1983,17 +2209,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "新增评论"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "增加评论"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "已增加"
@@ -2065,12 +2291,12 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a> 的有 <a href=\"%(tag_url)s\"
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a> 的媒体"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– æµè§ˆ <a href=\"%(user_url)s\">%(username)s</a> 的媒体"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2185,6 +2411,14 @@ msgstr "åˆé›†äºŽ"
msgid "Add to a collection"
msgstr "添加到åˆé›†"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2221,6 +2455,10 @@ msgstr "æ›´æ–°çš„"
msgid "older"
msgstr "æ›´æ—§çš„"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "ä½ç½®"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2229,38 +2467,38 @@ msgstr ""
msgid "Tagged with"
msgstr "标签"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "无法读å–图片文件。"
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "糟糕ï¼"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "å‘生错误"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "æ“作ä¸å…许"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "对ä¸èµ·è€å…„,我ä¸èƒ½è®©ä½ è¿™æ ·åšï¼</p><p>æ‚¨æ­£åœ¨è¯•ç€æ“作ä¸å…è®¸æ‚¨ä½¿ç”¨çš„åŠŸèƒ½ã€‚æ‚¨éš¾é“æƒ³æ‰“算删除所有用户账户å—?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2328,69 +2566,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "抱歉,ä¸å¼€æ”¾è¯„论。"
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "啊,您的评论是空的。"
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "您的评论已ç»å¼ è´´å®Œæˆï¼"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "请检查项目并é‡è¯•。"
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "您需è¦é€‰æ‹©æˆ–是新增一个åˆé›†"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "“%sâ€å·²ç»åœ¨â€œ%sâ€åˆé›†"
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "“%sâ€åŠ å…¥â€œ%sâ€åˆé›†"
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "您已ç»åˆ é™¤æ­¤åª’体。"
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "您正在删除别人的媒体,请å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "您已ç»ä»Žè¯¥åˆé›†ä¸­åˆ é™¤è¯¥é¡¹ç›®ã€‚"
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "由于您没有勾选确认,该项目没有被移除。"
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "您正在从别人的åˆé›†ä¸­åˆ é™¤é¡¹ç›®ï¼Œè¯·å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "您已ç»åˆ é™¤â€œ%sâ€åˆé›†ã€‚"
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "由于您没有勾选确认,该åˆé›†æ²¡æœ‰è¢«ç§»é™¤ã€‚"
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "您正在删除别人的åˆé›†ï¼Œè¯·å°å¿ƒæ“作。"
diff --git a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index fa96f8e6..00000000
--- a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW.Big5/mediagoblin.po
index 18d6900e..03b2cf52 100644
--- a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW.Big5/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Chinese (Taiwan) (Big5) (http://www.transifex.com/projects/p/mediagoblin/language/zh_TW.Big5/)\n"
"MIME-Version: 1.0\n"
@@ -18,70 +18,174 @@ msgstr ""
"Language: zh_TW.Big5\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr ""
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr ""
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr ""
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr ""
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr ""
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -90,7 +194,7 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -106,11 +210,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr ""
@@ -138,125 +242,137 @@ msgstr ""
msgid "This address contains errors"
msgstr ""
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr ""
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr ""
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr ""
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr ""
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr ""
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr ""
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr ""
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr ""
@@ -287,7 +403,7 @@ msgstr ""
msgid "Old link found for \"%s\"; removing.\n"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -295,65 +411,65 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
#: mediagoblin/meddleware/csrf.py:134
msgid ""
"CSRF cookie not present. This is most likely the result of a cookie blocker "
-"or somesuch.<br/>Make sure to permit the settings of cookies for this "
+"or somesuch. Make sure to permit the setting of cookies for this "
"domain."
msgstr ""
@@ -372,28 +488,28 @@ msgstr ""
msgid "I am sure I want to delete this"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -413,7 +529,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr ""
@@ -423,7 +539,7 @@ msgstr ""
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr ""
@@ -538,7 +654,58 @@ msgstr ""
msgid "What privileges will you take away?"
msgstr ""
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr ""
@@ -556,26 +723,26 @@ msgstr ""
msgid "You will not receive notifications for comments on %s."
msgstr ""
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr ""
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr ""
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr ""
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr ""
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr ""
@@ -630,7 +797,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -759,23 +926,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -923,11 +1087,7 @@ msgstr ""
msgid "Forgot your password?"
msgstr ""
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr ""
@@ -994,7 +1154,7 @@ msgstr ""
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr ""
@@ -1007,8 +1167,8 @@ msgid "Your OAuth clients"
msgstr ""
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr ""
@@ -1016,39 +1176,39 @@ msgstr ""
msgid "OpenID"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr ""
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr ""
@@ -1072,7 +1232,7 @@ msgstr ""
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1104,26 +1264,26 @@ msgstr ""
msgid "Sorry, an account is already registered to that Persona email."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr ""
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr ""
@@ -1147,15 +1307,15 @@ msgstr ""
msgid "Or register with Persona!"
msgstr ""
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr ""
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr ""
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr ""
@@ -1174,11 +1334,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr ""
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
@@ -1201,30 +1361,26 @@ msgstr ""
msgid "until %(until_when)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1232,25 +1388,29 @@ msgstr ""
msgid "Media processing panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr ""
@@ -1304,7 +1464,7 @@ msgid "Authorization Complete"
msgstr ""
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
@@ -1395,13 +1555,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr ""
@@ -1419,6 +1579,47 @@ msgstr ""
msgid "Changing %(username)s's email"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1444,7 +1645,7 @@ msgstr ""
msgid "Delete my account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr ""
@@ -1498,19 +1699,6 @@ msgstr ""
msgid "New comments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr ""
@@ -1523,38 +1711,38 @@ msgstr ""
msgid "Media tagged with: %(tag_name)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
+"\t your web browser does not support HTML5 \n"
+"\t audio."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr ""
@@ -1562,70 +1750,70 @@ msgstr ""
msgid "Created"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr ""
@@ -1639,6 +1827,32 @@ msgstr ""
msgid "Media in-processing"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1649,6 +1863,14 @@ msgstr ""
msgid "These uploads failed to process:"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1658,6 +1880,10 @@ msgstr ""
msgid "Last 10 successful uploads"
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1672,7 +1898,7 @@ msgid "Return to Reports Panel"
msgstr ""
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr ""
@@ -1698,6 +1924,10 @@ msgid ""
" "
msgstr ""
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1947,10 +2177,6 @@ msgstr ""
msgid "Active Users"
msgstr ""
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr ""
@@ -1978,17 +2204,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr ""
@@ -2060,12 +2286,12 @@ msgstr ""
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr ""
@@ -2180,6 +2406,14 @@ msgstr ""
msgid "Add to a collection"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2216,6 +2450,10 @@ msgstr ""
msgid "older"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr ""
@@ -2224,38 +2462,38 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr ""
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr ""
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr ""
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2323,69 +2561,69 @@ msgstr ""
msgid "Reason for Reporting"
msgstr ""
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr ""
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
deleted file mode 100644
index 8673b215..00000000
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW/mediagoblin.po
index aa712f88..da0a9b36 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-10 12:32-0500\n"
-"PO-Revision-Date: 2014-07-10 17:32+0000\n"
+"POT-Creation-Date: 2015-01-16 15:13-0600\n"
+"PO-Revision-Date: 2015-01-16 21:13+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/mediagoblin/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
@@ -23,70 +23,174 @@ msgstr ""
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/decorators.py:300 mediagoblin/plugins/openid/views.py:202
+#: mediagoblin/decorators.py:304 mediagoblin/plugins/openid/views.py:205
msgid "Sorry, registration is disabled on this instance."
msgstr "抱歉,本站已經關閉註冊功能。"
-#: mediagoblin/decorators.py:315
+#: mediagoblin/decorators.py:319
msgid "Sorry, reporting is disabled on this instance."
msgstr "抱歉,本站已經關閉回報功能。"
-#: mediagoblin/decorators.py:358 mediagoblin/plugins/ldap/views.py:55
-#: mediagoblin/plugins/persona/views.py:77
+#: mediagoblin/decorators.py:362 mediagoblin/plugins/ldap/views.py:58
+#: mediagoblin/plugins/persona/views.py:79
msgid "Sorry, authentication is disabled on this instance."
msgstr "抱歉,本站已經關閉èªè¨¼ã€‚"
-#: mediagoblin/auth/tools.py:43
+#: mediagoblin/auth/tools.py:45
msgid "Invalid User name or email address."
msgstr "無效的使用者å稱或 email ä½ç½®ã€‚"
-#: mediagoblin/auth/tools.py:44
+#: mediagoblin/auth/tools.py:46
msgid "This field does not take email addresses."
msgstr "本欄ä½ä¸æŽ¥å— email ä½ç½®ã€‚"
-#: mediagoblin/auth/tools.py:45
+#: mediagoblin/auth/tools.py:47
msgid "This field requires an email address."
msgstr "本欄ä½éœ€è¦ email ä½ç½®ã€‚"
-#: mediagoblin/auth/tools.py:116
+#: mediagoblin/auth/tools.py:118
msgid "Sorry, a user with that name already exists."
msgstr "抱歉,這個使用者å稱已經存在。"
-#: mediagoblin/auth/tools.py:120 mediagoblin/edit/views.py:407
+#: mediagoblin/auth/tools.py:122 mediagoblin/edit/views.py:452
msgid "Sorry, a user with that email address already exists."
msgstr "抱歉,此 email ä½ç½®å·²ç¶“被註冊了。"
-#: mediagoblin/auth/views.py:142 mediagoblin/edit/views.py:363
-#: mediagoblin/edit/views.py:384 mediagoblin/plugins/basic_auth/views.py:110
+#: mediagoblin/auth/views.py:145 mediagoblin/edit/views.py:408
+#: mediagoblin/edit/views.py:429 mediagoblin/plugins/basic_auth/views.py:110
msgid "The verification key or user id is incorrect."
msgstr "èªè¨¼é‡‘鑰或使用者 ID 䏿­£ç¢ºã€‚"
-#: mediagoblin/auth/views.py:161
+#: mediagoblin/auth/views.py:164
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "您的 email ä½å€å·²è¢«èªè­‰ã€‚您已經å¯ä»¥ç™»å…¥ï¼Œç·¨è¼¯æ‚¨çš„個人檔案並上傳圖片ï¼"
-#: mediagoblin/auth/views.py:167
+#: mediagoblin/auth/views.py:170
msgid "The verification key or user id is incorrect"
msgstr "èªè­‰ç¢¼æˆ–是使用者 ID 錯誤"
-#: mediagoblin/auth/views.py:185
+#: mediagoblin/auth/views.py:188
msgid "You must be logged in so we know who to send the email to!"
msgstr "您必須登入,我們æ‰çŸ¥é“ä¿¡è¦é€çµ¦èª°ï¼"
-#: mediagoblin/auth/views.py:193
+#: mediagoblin/auth/views.py:196
msgid "You've already verified your email address!"
msgstr "您的電å­éƒµä»¶å·²ç¶“確èªäº†ï¼"
-#: mediagoblin/auth/views.py:203
+#: mediagoblin/auth/views.py:206
msgid "Resent your verification email."
msgstr "é‡é€èªè­‰ä¿¡ã€‚"
-#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:89
+#: mediagoblin/db/mixin.py:404
+msgid "{username} added {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:405
+msgid "{username} added {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:407
+msgid "{username} authored {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:408
+msgid "{username} created {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:409
+msgid "{username} deleted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:410
+msgid "{username} disliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:411
+msgid "{username} favorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:412
+msgid "{username} followed {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:413
+msgid "{username} liked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:415
+msgid "{username} posted {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:416
+msgid "{username} posted {object} to {target}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:418
+msgid "{username} shared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:419
+msgid "{username} unfavorited {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:420
+msgid "{username} stopped following {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:421
+msgid "{username} unliked {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:422
+msgid "{username} unshared {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:423
+msgid "{username} updated {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:424
+msgid "{username} tagged {object}"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:428
+msgid "an image"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:429
+msgid "a comment"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:430
+msgid "a collection"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:431
+msgid "a video"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:432
+msgid "audio"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:433
+msgid "a person"
+msgstr ""
+
+#: mediagoblin/db/mixin.py:450 mediagoblin/db/mixin.py:459
+msgid "an object"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:90
#: mediagoblin/media_types/blog/forms.py:24
#: mediagoblin/media_types/blog/forms.py:33 mediagoblin/submit/forms.py:37
-#: mediagoblin/submit/forms.py:61 mediagoblin/user_pages/forms.py:45
+#: mediagoblin/submit/forms.py:61
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:40
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:69
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:100
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "標題"
@@ -95,7 +199,7 @@ msgid "Description of this work"
msgstr "這個作å“çš„æè¿°"
#: mediagoblin/edit/forms.py:33 mediagoblin/edit/forms.py:56
-#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:65
+#: mediagoblin/edit/forms.py:94 mediagoblin/submit/forms.py:65
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -111,11 +215,11 @@ msgstr "標籤"
msgid "Separate tags by commas."
msgstr "用逗號分隔標籤。"
-#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:97
+#: mediagoblin/edit/forms.py:42 mediagoblin/edit/forms.py:98
msgid "Slug"
msgstr "簡稱"
-#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:98
+#: mediagoblin/edit/forms.py:43 mediagoblin/edit/forms.py:99
msgid "The slug can't be empty"
msgstr "簡稱ä¸èƒ½ç‚ºç©ºç™½"
@@ -143,125 +247,137 @@ msgstr "網站"
msgid "This address contains errors"
msgstr "本網å€å‡ºéŒ¯äº†"
-#: mediagoblin/edit/forms.py:67
+#: mediagoblin/edit/forms.py:64
+msgid "Hometown"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:68
msgid "Email me when others comment on my media"
msgstr "ç•¶æœ‰äººå°æˆ‘的媒體評論時寄信給我"
-#: mediagoblin/edit/forms.py:69
+#: mediagoblin/edit/forms.py:70
msgid "Enable insite notifications about events."
msgstr "啟用活動的站內通知。"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:72
msgid "License preference"
msgstr "授權å好"
-#: mediagoblin/edit/forms.py:77
+#: mediagoblin/edit/forms.py:78
msgid "This will be your default license on upload forms."
msgstr "在上傳é é¢ï¼Œé€™å°‡æœƒæ˜¯æ‚¨é è¨­çš„æŽˆæ¬Šæ¨¡å¼ã€‚"
-#: mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:91
msgid "The title can't be empty"
msgstr "標題ä¸èƒ½æ˜¯ç©ºçš„"
-#: mediagoblin/edit/forms.py:92 mediagoblin/submit/forms.py:64
+#: mediagoblin/edit/forms.py:93 mediagoblin/submit/forms.py:64
#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "這個è’è—çš„æè¿°"
-#: mediagoblin/edit/forms.py:99
+#: mediagoblin/edit/forms.py:100
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "æ­¤è’è—ç¶²å€çš„æ¨™é¡Œéƒ¨ä»½ï¼Œé€šå¸¸ä¸éœ€è¦ä¿®æ”¹ã€‚"
-#: mediagoblin/edit/forms.py:106 mediagoblin/plugins/basic_auth/forms.py:68
+#: mediagoblin/edit/forms.py:107 mediagoblin/plugins/basic_auth/forms.py:68
msgid "Old password"
msgstr "舊的密碼"
-#: mediagoblin/edit/forms.py:108 mediagoblin/plugins/basic_auth/forms.py:70
+#: mediagoblin/edit/forms.py:109 mediagoblin/plugins/basic_auth/forms.py:70
msgid "Enter your old password to prove you own this account."
msgstr "è¼¸å…¥æ‚¨çš„èˆŠå¯†ç¢¼ä¾†è­‰æ˜Žæ‚¨æ“æœ‰é€™å€‹å¸³è™Ÿã€‚"
-#: mediagoblin/edit/forms.py:111 mediagoblin/plugins/basic_auth/forms.py:73
+#: mediagoblin/edit/forms.py:112 mediagoblin/plugins/basic_auth/forms.py:73
msgid "New password"
msgstr "新密碼"
-#: mediagoblin/edit/forms.py:119
+#: mediagoblin/edit/forms.py:120
msgid "New email address"
msgstr "æ–°çš„ email ä½å€"
-#: mediagoblin/edit/forms.py:123 mediagoblin/plugins/basic_auth/forms.py:28
+#: mediagoblin/edit/forms.py:124 mediagoblin/plugins/basic_auth/forms.py:28
#: mediagoblin/plugins/basic_auth/forms.py:43
#: mediagoblin/plugins/ldap/forms.py:39
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:64
-#: mediagoblin/tests/test_util.py:116
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:67
+#: mediagoblin/tests/test_util.py:148
msgid "Password"
msgstr "密碼"
-#: mediagoblin/edit/forms.py:125
+#: mediagoblin/edit/forms.py:126
msgid "Enter your password to prove you own this account."
msgstr "è¼¸å…¥æ‚¨çš„å¯†ç¢¼ä¾†è­‰æ˜Žæ‚¨æ“æœ‰é€™å€‹å¸³è™Ÿã€‚"
-#: mediagoblin/edit/forms.py:155
+#: mediagoblin/edit/forms.py:156
msgid "Identifier"
msgstr ""
-#: mediagoblin/edit/forms.py:156
+#: mediagoblin/edit/forms.py:157
msgid "Value"
msgstr ""
-#: mediagoblin/edit/views.py:78
+#: mediagoblin/edit/views.py:80
msgid "An entry with that slug already exists for this user."
msgstr "這個使用者已經有使用該簡稱的項目了。"
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:98
msgid "You are editing another user's media. Proceed with caution."
msgstr "您正在修改別人的媒體,請å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:166
+#: mediagoblin/edit/views.py:168
#, python-format
msgid "You added the attachment %s!"
msgstr "您加上了附件「%sã€ï¼"
-#: mediagoblin/edit/views.py:193
+#: mediagoblin/edit/views.py:195
msgid "You can only edit your own profile."
msgstr "您åªèƒ½ä¿®æ”¹æ‚¨è‡ªå·±çš„個人檔案。"
-#: mediagoblin/edit/views.py:199
+#: mediagoblin/edit/views.py:201
msgid "You are editing a user's profile. Proceed with caution."
msgstr "您正在修改別人的個人檔案,請å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:215
+#: mediagoblin/edit/views.py:232
msgid "Profile changes saved"
msgstr "個人檔案修改已儲存"
-#: mediagoblin/edit/views.py:248
+#: mediagoblin/edit/views.py:265
msgid "Account settings saved"
msgstr "帳號設定已儲存"
-#: mediagoblin/edit/views.py:282
+#: mediagoblin/edit/views.py:286
+msgid "Unknown application, not able to deauthorize"
+msgstr ""
+
+#: mediagoblin/edit/views.py:293
+msgid "Application has been deauthorized"
+msgstr ""
+
+#: mediagoblin/edit/views.py:327
msgid "You need to confirm the deletion of your account."
msgstr "您必須è¦ç¢ºèªæ˜¯å¦åˆªé™¤æ‚¨çš„帳號。"
-#: mediagoblin/edit/views.py:318 mediagoblin/submit/views.py:132
-#: mediagoblin/user_pages/views.py:252
+#: mediagoblin/edit/views.py:363 mediagoblin/submit/views.py:134
+#: mediagoblin/user_pages/views.py:254
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "您已經有一個稱åšã€Œ%sã€çš„è’è—了ï¼"
-#: mediagoblin/edit/views.py:322
+#: mediagoblin/edit/views.py:367
msgid "A collection with that slug already exists for this user."
msgstr "這個使用者已經有使用該簡稱的è’è—了。"
-#: mediagoblin/edit/views.py:337
+#: mediagoblin/edit/views.py:382
msgid "You are editing another user's collection. Proceed with caution."
msgstr "您正在修改別人的è’è—,請å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:378
+#: mediagoblin/edit/views.py:423
msgid "Your email address has been verified."
msgstr "您的 email ä½å€å·²èªè¨¼ã€‚"
-#: mediagoblin/edit/views.py:413 mediagoblin/plugins/basic_auth/views.py:200
+#: mediagoblin/edit/views.py:458 mediagoblin/plugins/basic_auth/views.py:200
msgid "Wrong password"
msgstr "密碼錯誤"
@@ -292,7 +408,7 @@ msgstr "è·³éŽã€Œ%sã€ï¼Œå·²ç¶“建置完æˆã€‚\n"
msgid "Old link found for \"%s\"; removing.\n"
msgstr "找到「%sã€èˆŠçš„連çµï¼Œåˆªé™¤ä¸­ã€‚\n"
-#: mediagoblin/gmg_commands/batchaddmedia.py:34
+#: mediagoblin/gmg_commands/batchaddmedia.py:40
msgid ""
"For more information about how to properly run this\n"
"script (and how to format the metadata csv file), read the MediaGoblin\n"
@@ -300,58 +416,58 @@ msgid ""
"<http://docs.mediagoblin.org/siteadmin/commandline-upload.html>"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:40
+#: mediagoblin/gmg_commands/batchaddmedia.py:46
msgid "Name of user these media entries belong to"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:43
+#: mediagoblin/gmg_commands/batchaddmedia.py:49
msgid "Path to the csv file containing metadata information."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:48
+#: mediagoblin/gmg_commands/batchaddmedia.py:54
msgid "Don't process eagerly, pass off to celery"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:63
+#: mediagoblin/gmg_commands/batchaddmedia.py:69
msgid "Sorry, no user by username '{username}' exists"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:74
+#: mediagoblin/gmg_commands/batchaddmedia.py:80
msgid "File at {path} not found, use -h flag for help"
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:115
+#: mediagoblin/gmg_commands/batchaddmedia.py:121
msgid ""
"Error with media '{media_id}' value '{error_path}': {error_msg}\n"
"Metadata was not uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:141
+#: mediagoblin/gmg_commands/batchaddmedia.py:147
msgid ""
"FAIL: Local file {filename} could not be accessed.\n"
"{filename} will not be uploaded."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:157
+#: mediagoblin/gmg_commands/batchaddmedia.py:163
msgid ""
"Successfully submitted {filename}!\n"
"Be sure to look at the Media Processing Panel on your website to be sure it\n"
"uploaded successfully."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:160
+#: mediagoblin/gmg_commands/batchaddmedia.py:166
msgid "FAIL: This file is larger than the upload limits for this site."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:163
+#: mediagoblin/gmg_commands/batchaddmedia.py:169
msgid "FAIL: This file will put this user past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:166
+#: mediagoblin/gmg_commands/batchaddmedia.py:172
msgid "FAIL: This user is already past their upload limits."
msgstr ""
-#: mediagoblin/gmg_commands/batchaddmedia.py:168
+#: mediagoblin/gmg_commands/batchaddmedia.py:174
msgid "{files_uploaded} out of {files_attempted} files successfully submitted"
msgstr ""
@@ -377,28 +493,28 @@ msgstr "æè¿°"
msgid "I am sure I want to delete this"
msgstr "我確定我è¦åˆªé™¤é€™å€‹åª’é«”"
-#: mediagoblin/media_types/blog/views.py:156 mediagoblin/submit/views.py:69
+#: mediagoblin/media_types/blog/views.py:158 mediagoblin/submit/views.py:71
msgid "Woohoo! Submitted!"
msgstr "啊哈ï¼PO 上去啦ï¼"
-#: mediagoblin/media_types/blog/views.py:198
+#: mediagoblin/media_types/blog/views.py:200
msgid "Woohoo! edited blogpost is submitted"
msgstr ""
-#: mediagoblin/media_types/blog/views.py:320
+#: mediagoblin/media_types/blog/views.py:322
msgid "You deleted the Blog."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:326
-#: mediagoblin/user_pages/views.py:329
+#: mediagoblin/media_types/blog/views.py:328
+#: mediagoblin/user_pages/views.py:332
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²åª’體沒有被移除。"
-#: mediagoblin/media_types/blog/views.py:333
+#: mediagoblin/media_types/blog/views.py:335
msgid "You are about to delete another user's Blog. Proceed with caution."
msgstr ""
-#: mediagoblin/media_types/blog/views.py:344
+#: mediagoblin/media_types/blog/views.py:346
msgid "The blog was not deleted because you have no rights."
msgstr ""
@@ -418,7 +534,7 @@ msgstr ""
#: mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html:35
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:76
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
msgid "Edit"
msgstr "編輯"
@@ -428,7 +544,7 @@ msgstr "編輯"
#: mediagoblin/plugins/persona/templates/mediagoblin/plugins/persona/edit.html:39
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:80
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:88
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:89
msgid "Delete"
msgstr "刪除"
@@ -543,7 +659,58 @@ msgstr "è«‹å•æ‚¨è¦å¦‚何處ç†é€™é …回報?"
msgid "What privileges will you take away?"
msgstr "您è¦å–走他哪些權é™ï¼Ÿ"
-#: mediagoblin/moderation/tools.py:91
+#: mediagoblin/moderation/forms.py:122
+msgid "Why user was banned:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:125
+msgid "Message to user:"
+msgstr ""
+
+#: mediagoblin/moderation/forms.py:128
+msgid "Resolution content:"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:37
+msgid ""
+"\n"
+"{mod} took away {user}'s {privilege} privileges."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:50
+msgid ""
+"\n"
+"{mod} banned user {user} {expiration_date}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:54
+msgid "until {date}"
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:56
+#: mediagoblin/templates/mediagoblin/banned.html:30
+msgid "indefinitely"
+msgstr "永久å°éŽ–äº†"
+
+#: mediagoblin/moderation/tools.py:65
+msgid ""
+"\n"
+"{mod} sent a warning email to the {user}."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:74
+msgid ""
+"\n"
+"{mod} deleted the comment."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:81
+msgid ""
+"\n"
+"{mod} deleted the media entry."
+msgstr ""
+
+#: mediagoblin/moderation/tools.py:94
msgid "Warning from"
msgstr "警告,來自"
@@ -561,26 +728,26 @@ msgstr "已訂閱 %s 的評論ï¼"
msgid "You will not receive notifications for comments on %s."
msgstr "æ‚¨å°‡ä¸æœƒæ”¶åˆ° %s 的評論通知。"
-#: mediagoblin/oauth/views.py:242
+#: mediagoblin/oauth/views.py:239
msgid "Must provide an oauth_token."
msgstr "å¿…é ˆæä¾› oauth_token。"
-#: mediagoblin/oauth/views.py:247 mediagoblin/oauth/views.py:297
+#: mediagoblin/oauth/views.py:244 mediagoblin/oauth/views.py:295
msgid "No request token found."
msgstr "找ä¸åˆ°è«‹æ±‚çš„ token。"
-#: mediagoblin/plugins/api/views.py:76 mediagoblin/plugins/piwigo/views.py:155
-#: mediagoblin/submit/views.py:78
+#: mediagoblin/plugins/api/views.py:78 mediagoblin/plugins/piwigo/views.py:157
+#: mediagoblin/submit/views.py:80
msgid "Sorry, the file size is too big."
msgstr "抱歉,檔案太大了。"
-#: mediagoblin/plugins/api/views.py:79 mediagoblin/plugins/piwigo/views.py:158
-#: mediagoblin/submit/views.py:81
+#: mediagoblin/plugins/api/views.py:81 mediagoblin/plugins/piwigo/views.py:160
+#: mediagoblin/submit/views.py:83
msgid "Sorry, uploading this file will put you over your upload limit."
msgstr "æŠ±æ­‰ï¼Œä¸Šå‚³è©²æª”æ¡ˆå°‡æœƒè¶…éŽæ‚¨çš„上傳é™åˆ¶ã€‚"
-#: mediagoblin/plugins/api/views.py:83 mediagoblin/plugins/piwigo/views.py:162
-#: mediagoblin/submit/views.py:87
+#: mediagoblin/plugins/api/views.py:85 mediagoblin/plugins/piwigo/views.py:164
+#: mediagoblin/submit/views.py:89
msgid "Sorry, you have reached your upload limit."
msgstr "抱歉,您已經碰到了您的上傳é™åˆ¶ã€‚"
@@ -635,7 +802,7 @@ msgid ""
" Yes. If you would prefer, you may go to the media homepage of the piece\n"
" of media you would like to feature or unfeature and look at the bar to\n"
" the side of the media entry. If the piece of media has not been featured\n"
-" yet you should see a button that says 'Feature'. Press that button and\n"
+" yet you should see a button that says \"Feature\". Press that button and\n"
" the media will be featured as a Primary Feature at the top of the page.\n"
" All other featured media entries will remain as features, but will be\n"
" pushed further down the page.<br /><br />\n"
@@ -764,23 +931,20 @@ msgstr ""
msgid ""
"If you would like to feature a\n"
" piece of media, go to that media entry's homepage and click the button\n"
-" that says"
+" that says <a class=\"button_action\">Feature</a>."
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:65
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:67
+#, python-format
msgid ""
"You're seeing this page because you are a user capable of\n"
" featuring media, a regular user would see a blank page, so be sure to\n"
" have media featured as long as your instance has the 'archivalook'\n"
" plugin enabled. A more advanced tool to manage features can be found\n"
-" in the"
+" in the <a href=\"%(featured_media_url)s\">feature management panel.</a>"
msgstr ""
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:72
-msgid "feature management panel."
-msgstr ""
-
-#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:77
+#: mediagoblin/plugins/archivalook/templates/archivalook/root.html:79
msgid "View most recent media"
msgstr ""
@@ -928,11 +1092,7 @@ msgstr "é€å‡ºæŒ‡ç¤º"
msgid "Forgot your password?"
msgstr "忘了密碼嗎?"
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
-msgid "Location"
-msgstr "ä½ç½®"
-
-#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:51
#, python-format
msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
msgstr "在 <a href=\"%(osm_url)s\">OpenStreetMap</a> 上觀看"
@@ -999,7 +1159,7 @@ msgstr "此應用程å¼çš„é‡å®šå‘ URI,本欄ä½åœ¨å…¬é–‹é¡žåž‹çš„ OAuth 用æ
msgid "This field is required for public clients"
msgstr "本欄ä½åœ¨å…¬é–‹é¡žåž‹çš„用戶程å¼ç‚ºå¿…å¡«"
-#: mediagoblin/plugins/oauth/views.py:55
+#: mediagoblin/plugins/oauth/views.py:57
msgid "The client {0} has been registered!"
msgstr "OAuth ç”¨æˆ¶ç¨‹å¼ {0} 註冊完æˆï¼"
@@ -1012,8 +1172,8 @@ msgid "Your OAuth clients"
msgstr "您的 OAuth 用戶程å¼"
#: mediagoblin/plugins/openid/__init__.py:97
-#: mediagoblin/plugins/openid/views.py:268
-#: mediagoblin/plugins/openid/views.py:297
+#: mediagoblin/plugins/openid/views.py:271
+#: mediagoblin/plugins/openid/views.py:300
msgid "Sorry, an account is already registered to that OpenID."
msgstr "抱歉,有帳號已經登記了您輸入的 OpenID。"
@@ -1021,39 +1181,39 @@ msgstr "抱歉,有帳號已經登記了您輸入的 OpenID。"
msgid "OpenID"
msgstr "OpenID"
-#: mediagoblin/plugins/openid/views.py:48
+#: mediagoblin/plugins/openid/views.py:51
msgid "Sorry, the OpenID server could not be found"
msgstr "抱歉,找ä¸åˆ° OpenID 伺æœå™¨"
-#: mediagoblin/plugins/openid/views.py:61
+#: mediagoblin/plugins/openid/views.py:64
#, python-format
msgid "No OpenID service was found for %s"
msgstr "找ä¸åˆ° %s çš„ OpenID æœå‹™"
-#: mediagoblin/plugins/openid/views.py:106
+#: mediagoblin/plugins/openid/views.py:109
#, python-format
msgid "Verification of %s failed: %s"
msgstr "%s çš„èªè¨¼å¤±æ•—:%s"
-#: mediagoblin/plugins/openid/views.py:117
+#: mediagoblin/plugins/openid/views.py:120
msgid "Verification cancelled"
msgstr "èªè¨¼å·²å–消"
-#: mediagoblin/plugins/openid/views.py:314
+#: mediagoblin/plugins/openid/views.py:317
msgid "Your OpenID url was saved successfully."
msgstr "您的 OpenID url å·²æˆåŠŸå„²å­˜ã€‚"
-#: mediagoblin/plugins/openid/views.py:338
-#: mediagoblin/plugins/openid/views.py:393
+#: mediagoblin/plugins/openid/views.py:341
+#: mediagoblin/plugins/openid/views.py:396
msgid "You can't delete your only OpenID URL unless you have a password set"
msgstr "é™¤éžæ‚¨è¨­å®šäº†å¸³è™Ÿçš„密碼,您無法刪除帳號下唯一的 OpenID URL"
-#: mediagoblin/plugins/openid/views.py:343
-#: mediagoblin/plugins/openid/views.py:402
+#: mediagoblin/plugins/openid/views.py:346
+#: mediagoblin/plugins/openid/views.py:405
msgid "That OpenID is not registered to this account."
msgstr "OpenID 尚未登記到此帳號"
-#: mediagoblin/plugins/openid/views.py:385
+#: mediagoblin/plugins/openid/views.py:388
msgid "OpenID was successfully removed."
msgstr "OpenID å·²æˆåŠŸç§»é™¤ã€‚"
@@ -1077,7 +1237,7 @@ msgstr "OpenID"
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:28
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:36
#: mediagoblin/plugins/openid/templates/mediagoblin/plugins/openid/login.html:57
-#: mediagoblin/templates/mediagoblin/base.html:122
+#: mediagoblin/templates/mediagoblin/base.html:124
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:47
@@ -1109,26 +1269,26 @@ msgstr "或是使用 OpenID 註冊ï¼"
msgid "Sorry, an account is already registered to that Persona email."
msgstr "抱歉,有帳號已經登記了您輸入的 Persona email。"
-#: mediagoblin/plugins/persona/views.py:138
+#: mediagoblin/plugins/persona/views.py:140
msgid "The Persona email address was successfully removed."
msgstr "Persona email ä½å€å·²æˆåŠŸç§»é™¤ã€‚"
-#: mediagoblin/plugins/persona/views.py:144
+#: mediagoblin/plugins/persona/views.py:146
msgid ""
"You can't delete your only Persona email address unless you have a password "
"set."
msgstr "é™¤éžæ‚¨è¨­å®šäº†å¸³è™Ÿçš„密碼,您無法刪除帳號下唯一的 Persona email ä½å€ã€‚"
-#: mediagoblin/plugins/persona/views.py:149
+#: mediagoblin/plugins/persona/views.py:151
msgid "That Persona email address is not registered to this account."
msgstr "該 Persona email ä½å€å°šæœªç™»è¨˜åˆ°æ­¤å¸³è™Ÿã€‚"
-#: mediagoblin/plugins/persona/views.py:176
+#: mediagoblin/plugins/persona/views.py:178
msgid ""
"Sorry, an account is already registered with that Persona email address."
msgstr "抱歉,有帳號已經登記了您輸入的 Persona email ä½å€ã€‚"
-#: mediagoblin/plugins/persona/views.py:192
+#: mediagoblin/plugins/persona/views.py:194
msgid "Your Persona email address was saved successfully."
msgstr "您的 Persona email ä½å€å·²æˆåŠŸå„²å­˜"
@@ -1152,15 +1312,15 @@ msgstr "或是使用 Persona 登入ï¼"
msgid "Or register with Persona!"
msgstr "或是使用 Persona 註冊ï¼"
-#: mediagoblin/processing/__init__.py:420
+#: mediagoblin/processing/__init__.py:422
msgid "Invalid file given for media type."
msgstr "指定錯誤的媒體類別ï¼"
-#: mediagoblin/processing/__init__.py:427
+#: mediagoblin/processing/__init__.py:429
msgid "Copying to public storage failed."
msgstr "複製到公有存儲失敗。"
-#: mediagoblin/processing/__init__.py:435
+#: mediagoblin/processing/__init__.py:437
msgid "An acceptable processing file was not found"
msgstr "找ä¸åˆ°å¯æ”¶å—çš„å¾…è™•ç†æª”案"
@@ -1179,11 +1339,11 @@ msgid ""
" Markdown</a> for formatting."
msgstr "您å¯ä»¥ä½¿ç”¨\n<a href=\"http://markdown.tw\">\nMarkdown</a> 來排版。"
-#: mediagoblin/submit/views.py:55
+#: mediagoblin/submit/views.py:57
msgid "You must provide a file."
msgstr "您必須æä¾›ä¸€å€‹æª”案"
-#: mediagoblin/submit/views.py:138
+#: mediagoblin/submit/views.py:140
#, python-format
msgid "Collection \"%s\" added!"
msgstr "è’è—「%sã€æ–°å¢žå®Œæˆï¼"
@@ -1206,30 +1366,26 @@ msgstr "您被"
msgid "until %(until_when)s"
msgstr "å°éŽ–äº†ï¼Œæœƒåœ¨ %(until_when)s 解除"
-#: mediagoblin/templates/mediagoblin/banned.html:30
-msgid "indefinitely"
-msgstr "永久å°éŽ–äº†"
-
-#: mediagoblin/templates/mediagoblin/base.html:97
+#: mediagoblin/templates/mediagoblin/base.html:99
msgid "Verify your email!"
msgstr "ç¢ºèªæ‚¨çš„é›»å­éƒµä»¶"
-#: mediagoblin/templates/mediagoblin/base.html:104
-#: mediagoblin/templates/mediagoblin/base.html:112
+#: mediagoblin/templates/mediagoblin/base.html:106
+#: mediagoblin/templates/mediagoblin/base.html:114
msgid "log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:131
+#: mediagoblin/templates/mediagoblin/base.html:133
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr "<a href=\"%(user_url)s\">%(user_name)s</a> 的帳號"
-#: mediagoblin/templates/mediagoblin/base.html:138
+#: mediagoblin/templates/mediagoblin/base.html:140
msgid "Change account settings"
msgstr "更改帳號設定"
-#: mediagoblin/templates/mediagoblin/base.html:142
-#: mediagoblin/templates/mediagoblin/base.html:165
+#: mediagoblin/templates/mediagoblin/base.html:144
+#: mediagoblin/templates/mediagoblin/base.html:167
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:21
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:27
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
@@ -1237,25 +1393,29 @@ msgstr "更改帳號設定"
msgid "Media processing panel"
msgstr "媒體處ç†é¢æ¿"
-#: mediagoblin/templates/mediagoblin/base.html:152
+#: mediagoblin/templates/mediagoblin/base.html:154
msgid "Log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:155
+#: mediagoblin/templates/mediagoblin/base.html:157
#: mediagoblin/templates/mediagoblin/user_pages/user.html:113
msgid "Add media"
msgstr "新增媒體"
-#: mediagoblin/templates/mediagoblin/base.html:158
+#: mediagoblin/templates/mediagoblin/base.html:160
#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr "新增新的è’è—"
-#: mediagoblin/templates/mediagoblin/base.html:169
+#: mediagoblin/templates/mediagoblin/base.html:165
+msgid "Moderation powers:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:171
msgid "User management panel"
msgstr "使用者管ç†é¢æ¿"
-#: mediagoblin/templates/mediagoblin/base.html:173
+#: mediagoblin/templates/mediagoblin/base.html:175
msgid "Report management panel"
msgstr "回報管ç†é¢æ¿"
@@ -1309,8 +1469,8 @@ msgid "Authorization Complete"
msgstr "èªè¨¼å®Œæˆ"
#: mediagoblin/templates/mediagoblin/api/oob.html:28
-msgid "Copy and paste this into your client:"
-msgstr "請將以下文字複製並貼到應用程å¼ä¸Šï¼š"
+msgid "Copy and paste this <strong>verifier code</strong> into your client:"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -1400,13 +1560,13 @@ msgid "Editing attachments for %(media_title)s"
msgstr "編輯 %(media_title)s 的附件"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:204
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:220
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:205
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:221
msgid "Attachments"
msgstr "附件"
#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:226
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:227
msgid "Add attachment"
msgstr "新增附件"
@@ -1424,6 +1584,47 @@ msgstr "儲存變更"
msgid "Changing %(username)s's email"
msgstr "更改 %(username)s çš„ email ä½å€"
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:21
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:58
+msgid "Deauthorize applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:27
+msgid "Deauthorize Applications"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:28
+msgid ""
+"These applications can access your GNU MediaGoblin account. Deauthorizing the\n"
+" application will prevent the application from accessing your account."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:37
+msgid "There are no applications authorized."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:53
+msgid "Type:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:58
+msgid "Authorized:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html:60
+#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
+#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
+#: mediagoblin/templates/mediagoblin/moderation/report.html:57
+#: mediagoblin/templates/mediagoblin/moderation/report.html:120
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
+#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:147
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:182
+#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
+#, python-format
+msgid "%(formatted_time)s ago"
+msgstr "%(formatted_time)s å‰"
+
#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
#, python-format
msgid "Really delete user '%(user_name)s' and all related media/comments?"
@@ -1449,7 +1650,7 @@ msgstr "正在改變 %(username)s 的帳號設定"
msgid "Delete my account"
msgstr "刪除我的帳號"
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:62
msgid "Email"
msgstr "Email"
@@ -1503,19 +1704,6 @@ msgstr "您好:\n\n我們è¦ç¢ºèªæ‚¨æ˜¯ %(username)s 。如果確實如此,
msgid "New comments"
msgstr "新的評論"
-#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:24
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:39
-#: mediagoblin/templates/mediagoblin/moderation/report.html:57
-#: mediagoblin/templates/mediagoblin/moderation/report.html:120
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:131
-#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:151
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:146
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
-#: mediagoblin/templates/mediagoblin/user_pages/report.html:48
-#, python-format
-msgid "%(formatted_time)s ago"
-msgstr "%(formatted_time)s å‰"
-
#: mediagoblin/templates/mediagoblin/fragments/header_notifications.html:41
msgid "Mark all read"
msgstr "全部標示為已讀"
@@ -1528,38 +1716,38 @@ msgstr "全部標示為已讀"
msgid "Media tagged with: %(tag_name)s"
msgstr "這個媒體具有以下標籤:%(tag_name)s"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:67
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:74
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:36
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:58
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:69
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:76
msgid "Download"
msgstr "下載"
-#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:40
msgid "Original"
msgstr "原始檔"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:45
msgid ""
"Sorry, this audio will not work because \n"
-"\tyour web browser does not support HTML5 \n"
-"\taudio."
-msgstr "抱歉,此è²éŸ³ç„¡æ³•播放,因為您的ç€è¦½å™¨ä¸æ”¯æ´ HTML5 音訊。"
+"\t your web browser does not support HTML5 \n"
+"\t audio."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:48
msgid ""
"You can get a modern web browser that \n"
-"\tcan play the audio at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤è²éŸ³çš„ç€è¦½å™¨ï¼"
+"\t can play the audio at <a href=\"http://getfirefox.com\">\n"
+"\t http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:73
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:80
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:62
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:75
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:82
msgid "Original file"
msgstr "原始檔案"
-#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:65
msgid "WebM file (Vorbis codec)"
msgstr "WebM 檔案 (Vorbis 編碼)"
@@ -1567,70 +1755,70 @@ msgstr "WebM 檔案 (Vorbis 編碼)"
msgid "Created"
msgstr "建立於"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:60
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:90
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:96
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:102
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:108
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:59
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:65
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:62
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:68
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:63
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
#, python-format
msgid "Image for %(media_title)s"
msgstr " %(media_title)s 的照片"
-#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:81
+#: mediagoblin/templates/mediagoblin/media_displays/pdf.html:83
msgid "PDF file"
msgstr "PDF 檔"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Perspective"
msgstr "é€è¦–"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:119
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
msgid "Front"
msgstr "æ­£é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:122
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:123
msgid "Top"
msgstr "é ‚é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:126
msgid "Side"
msgstr "å´é¢"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
msgid "WebGL"
msgstr "WebGL"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:137
msgid "Download model"
msgstr "下載模型"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:145
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
msgstr "檔案格å¼"
-#: mediagoblin/templates/mediagoblin/media_displays/stl.html:147
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "物件高度"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:63
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:64
msgid ""
"Sorry, this video will not work because\n"
" your web browser does not support HTML5 \n"
" video."
msgstr "抱歉,由於您的ç€è¦½å™¨ä¸æ”¯æ´ HTML5 影片,本影片無法播放"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:66
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:67
msgid ""
"You can get a modern web browser that \n"
" can play this video at <a href=\"http://getfirefox.com\">\n"
" http://getfirefox.com</a>!"
msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤å½±ç‰‡çš„先進ç€è¦½å™¨ã€‚"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:88
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:90
msgid "WebM file (VP8/Vorbis)"
msgstr "WebM 檔案 (VP8/Vorbis)"
@@ -1644,6 +1832,32 @@ msgstr "此處您å¯ä»¥è¿½è¹¤æœ¬ç«™å°è™•ç†åª’體的狀態。"
msgid "Media in-processing"
msgstr "媒體處ç†ä¸­"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:38
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:67
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:98
+#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
+msgid "ID"
+msgstr "ID"
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:39
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:68
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:99
+msgid "User"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:41
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:70
+msgid "When submitted"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:42
+msgid "Transcoding progress"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:53
+msgid "Unknown"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:59
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
@@ -1654,6 +1868,14 @@ msgstr "沒有正在處ç†ä¸­çš„媒體"
msgid "These uploads failed to process:"
msgstr "無法處ç†é€™äº›ä¸Šå‚³å…§å®¹ï¼š"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:71
+msgid "Reason for failure"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:72
+msgid "Failure metadata"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:91
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
@@ -1663,6 +1885,10 @@ msgstr "沒有失敗的紀錄ï¼"
msgid "Last 10 successful uploads"
msgstr "最近 10 次æˆåŠŸä¸Šå‚³çš„ç´€éŒ„"
+#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:101
+msgid "Submitted"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/media_panel.html:113
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
@@ -1677,7 +1903,7 @@ msgid "Return to Reports Panel"
msgstr "å›žåˆ°å›žå ±é¢æ¿"
#: mediagoblin/templates/mediagoblin/moderation/report.html:35
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:162
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:163
msgid "Report"
msgstr "回報"
@@ -1703,6 +1929,10 @@ msgid ""
" "
msgstr "\n <a href=\"%(user_url)s\"> %(user_name)s</a>\n 的內容已被刪除\n "
+#: mediagoblin/templates/mediagoblin/moderation/report.html:102
+msgid "Reason for report:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/moderation/report.html:133
#: mediagoblin/templates/mediagoblin/moderation/user.html:136
msgid "Resolve"
@@ -1952,10 +2182,6 @@ msgstr "\n在這裡您å¯ä»¥æŸ¥è©¢ä½¿ç”¨è€…,以進行å„項處置。 "
msgid "Active Users"
msgstr "活動中的使用者"
-#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:75
-msgid "ID"
-msgstr "ID"
-
#: mediagoblin/templates/mediagoblin/moderation/user_panel.html:77
msgid "When Joined"
msgstr "加入時間"
@@ -1983,17 +2209,17 @@ msgid "â– Blog post by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:92
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:105
msgid "Add a comment"
msgstr "新增評論"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:103
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:115
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:116
msgid "Add this comment"
msgstr "增加評論"
#: mediagoblin/templates/mediagoblin/user_pages/blog_media.html:149
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:179
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:180
msgid "Added"
msgstr "新增於"
@@ -2065,12 +2291,12 @@ msgstr "標籤為 <a href=\"%(tag_url)s\">%(tag)s</a> 的 <a href=\"%(user_url)s
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a> 的媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:39
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– ç€è¦½ <a href=\"%(user_url)s\">%(username)s</a> 的媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:119
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:120
msgid "Comment Preview"
msgstr "è©•è«–é è¦½"
@@ -2185,6 +2411,14 @@ msgstr "è’集了"
msgid "Add to a collection"
msgstr "加入至è’è—"
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:24
+msgid "Subscribe to comments"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/comment-subscription.html:30
+msgid "Silence comments"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -2221,6 +2455,10 @@ msgstr "æ›´æ–°çš„"
msgid "older"
msgstr "更舊的"
+#: mediagoblin/templates/mediagoblin/utils/profile.html:36
+msgid "Location"
+msgstr "ä½ç½®"
+
#: mediagoblin/templates/mediagoblin/utils/report.html:25
msgid "Report media"
msgstr "回報媒體"
@@ -2229,38 +2467,38 @@ msgstr "回報媒體"
msgid "Tagged with"
msgstr "標籤"
-#: mediagoblin/tools/exif.py:81
+#: mediagoblin/tools/exif.py:83
msgid "Could not read the image file."
msgstr "無法讀å–圖片檔案。"
-#: mediagoblin/tools/response.py:38
+#: mediagoblin/tools/response.py:40
msgid "Oops!"
msgstr "糟糕ï¼"
-#: mediagoblin/tools/response.py:39
+#: mediagoblin/tools/response.py:41
msgid "An error occured"
msgstr "發生錯誤"
-#: mediagoblin/tools/response.py:53
+#: mediagoblin/tools/response.py:55
msgid "Bad Request"
msgstr "錯誤的請求"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:57
msgid "The request sent to the server is invalid, please double check it"
msgstr "傳é€åˆ°æ­¤ä¼ºæœå™¨çš„請求無效,請å†ä¸‰ç¢ºèª"
-#: mediagoblin/tools/response.py:63
+#: mediagoblin/tools/response.py:65
msgid "Operation not allowed"
msgstr "æ“作ä¸å…許"
-#: mediagoblin/tools/response.py:64
+#: mediagoblin/tools/response.py:66
msgid ""
"Sorry Dave, I can't let you do that!</p><p>You have tried to perform a "
"function that you are not allowed to. Have you been trying to delete all "
"user accounts again?"
msgstr "Dave å°ä¸èµ·ï¼Œæˆ‘ä¸èƒ½è®“你這樣åšï¼</p><p>您正在試著æ“作ä¸å…許您使用的功能。您打算刪除所有使用者的帳號嗎?"
-#: mediagoblin/tools/response.py:72
+#: mediagoblin/tools/response.py:74
msgid ""
"There doesn't seem to be a page at this address. Sorry!</p><p>If you're sure"
" the address is correct, maybe the page you're looking for has been moved or"
@@ -2328,69 +2566,69 @@ msgstr "您å¯ä»¥ä½¿ç”¨\n<a href=\"http://markdown.tw\" target=\"_blank\">\nMark
msgid "Reason for Reporting"
msgstr "回報ç†ç”±"
-#: mediagoblin/user_pages/views.py:188
+#: mediagoblin/user_pages/views.py:191
msgid "Sorry, comments are disabled."
msgstr "抱歉,評論被關閉了。"
-#: mediagoblin/user_pages/views.py:193
+#: mediagoblin/user_pages/views.py:196
msgid "Oops, your comment was empty."
msgstr "啊,您的評論是空的。"
-#: mediagoblin/user_pages/views.py:199
+#: mediagoblin/user_pages/views.py:204
msgid "Your comment has been posted!"
msgstr "您的評論已經張貼完æˆï¼"
-#: mediagoblin/user_pages/views.py:235
+#: mediagoblin/user_pages/views.py:237
msgid "Please check your entries and try again."
msgstr "請檢查項目並é‡è©¦ã€‚"
-#: mediagoblin/user_pages/views.py:275
+#: mediagoblin/user_pages/views.py:278
msgid "You have to select or add a collection"
msgstr "您需è¦é¸æ“‡æˆ–是新增一個è’è—"
-#: mediagoblin/user_pages/views.py:286
+#: mediagoblin/user_pages/views.py:289
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "「%sã€å·²ç¶“在「%sã€è’è—"
-#: mediagoblin/user_pages/views.py:292
+#: mediagoblin/user_pages/views.py:295
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "「%sã€åŠ å…¥ã€Œ%sã€è’è—"
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:320
msgid "You deleted the media."
msgstr "您已經刪除此媒體。"
-#: mediagoblin/user_pages/views.py:336
+#: mediagoblin/user_pages/views.py:339
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "您正在刪除別人的媒體,請å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:409
+#: mediagoblin/user_pages/views.py:412
msgid "You deleted the item from the collection."
msgstr "您已經從該è’è—中刪除該項目。"
-#: mediagoblin/user_pages/views.py:413
+#: mediagoblin/user_pages/views.py:416
msgid "The item was not removed because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²é …目沒有被移除。"
-#: mediagoblin/user_pages/views.py:421
+#: mediagoblin/user_pages/views.py:424
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "您正在從別人的è’è—中刪除項目,請å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:453
+#: mediagoblin/user_pages/views.py:456
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "您已經刪除「%sã€è’è—。"
-#: mediagoblin/user_pages/views.py:460
+#: mediagoblin/user_pages/views.py:463
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²è’è—æ²’有被移除。"
-#: mediagoblin/user_pages/views.py:468
+#: mediagoblin/user_pages/views.py:471
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "您正在刪除別人的è’è—,請å°å¿ƒæ“作。"
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index e0711416..05a26792 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -28,6 +28,8 @@ from mediagoblin.tools.pluginapi import hook_runall
from mediagoblin.tools.workbench import WorkbenchManager
from mediagoblin.storage import storage_system_from_config
+from mediagoblin.tools.transition import DISABLE_GLOBALS
+
class Error(Exception):
pass
@@ -58,18 +60,26 @@ def setup_global_and_app_config(config_path):
return global_config, app_config
-def setup_database(run_migrations=False):
- app_config = mg_globals.app_config
- global_config = mg_globals.global_config
+def setup_database(app):
+ app_config = app.app_config
+ global_config = app.global_config
+ run_migrations = app_config['run_migrations']
# Load all models for media types (plugins, ...)
load_models(app_config)
# Set up the database
- db = setup_connection_and_db_from_config(app_config, run_migrations)
+ db = setup_connection_and_db_from_config(
+ app_config, run_migrations, app=app)
+ # run_migrations is used for tests
if run_migrations:
- #Run the migrations to initialize/update the database.
- from mediagoblin.gmg_commands.dbupdate import run_all_migrations
- run_all_migrations(db, app_config, global_config)
+ # Run the migrations to initialize/update the database.
+ # We only run the alembic migrations in the case of unit
+ # tests, in which case we don't need to run the legacy
+ # migrations.
+ from mediagoblin.gmg_commands.dbupdate import (
+ run_alembic_migrations, run_foundations)
+ run_alembic_migrations(db, app_config, global_config)
+ run_foundations(db, global_config)
else:
check_db_migrations_current(db)
@@ -154,4 +164,7 @@ def setup_workbench():
workbench_manager = WorkbenchManager(app_config['workbench_path'])
- setup_globals(workbench_manager=workbench_manager)
+ if not DISABLE_GLOBALS:
+ setup_globals(workbench_manager=workbench_manager)
+
+ return workbench_manager
diff --git a/mediagoblin/init/celery/__init__.py b/mediagoblin/init/celery/__init__.py
index 57242bf6..780e0055 100644
--- a/mediagoblin/init/celery/__init__.py
+++ b/mediagoblin/init/celery/__init__.py
@@ -16,8 +16,11 @@
import os
import sys
+import datetime
import logging
+import six
+
from celery import Celery
from mediagoblin.tools.pluginapi import hook_runall
@@ -27,7 +30,9 @@ _log = logging.getLogger(__name__)
MANDATORY_CELERY_IMPORTS = [
'mediagoblin.processing.task',
- 'mediagoblin.notifications.task']
+ 'mediagoblin.notifications.task',
+ 'mediagoblin.submit.task',
+]
DEFAULT_SETTINGS_MODULE = 'mediagoblin.init.celery.dummy_settings_module'
@@ -45,7 +50,7 @@ def get_celery_settings_dict(app_config, global_config,
celery_settings = {}
# Add all celery settings from config
- for key, value in celery_conf.iteritems():
+ for key, value in six.iteritems(celery_conf):
celery_settings[key] = value
# TODO: use default result stuff here if it exists
@@ -58,6 +63,18 @@ def get_celery_settings_dict(app_config, global_config,
celery_settings['CELERY_ALWAYS_EAGER'] = True
celery_settings['CELERY_EAGER_PROPAGATES_EXCEPTIONS'] = True
+ # Garbage collection periodic task
+ frequency = app_config.get('garbage_collection', 60)
+ if frequency:
+ frequency = int(frequency)
+ celery_settings['CELERYBEAT_SCHEDULE'] = {
+ 'garbage-collection': {
+ 'task': 'mediagoblin.submit.task.collect_garbage',
+ 'schedule': datetime.timedelta(minutes=frequency),
+ }
+ }
+ celery_settings['BROKER_HEARTBEAT'] = 1
+
return celery_settings
@@ -98,7 +115,7 @@ def setup_celery_from_config(app_config, global_config,
__import__(settings_module)
this_module = sys.modules[settings_module]
- for key, value in celery_settings.iteritems():
+ for key, value in six.iteritems(celery_settings):
setattr(this_module, key, value)
if set_environ:
diff --git a/mediagoblin/init/config.py b/mediagoblin/init/config.py
index 11a91cff..a9189e8d 100644
--- a/mediagoblin/init/config.py
+++ b/mediagoblin/init/config.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import copy
import logging
import os
import pkg_resources
@@ -29,16 +30,21 @@ CONFIG_SPEC_PATH = pkg_resources.resource_filename(
'mediagoblin', 'config_spec.ini')
-def _setup_defaults(config, config_path):
+def _setup_defaults(config, config_path, extra_defaults=None):
"""
Setup DEFAULTS in a config object from an (absolute) config_path.
"""
+ extra_defaults = extra_defaults or {}
+
config.setdefault('DEFAULT', {})
config['DEFAULT']['here'] = os.path.dirname(config_path)
config['DEFAULT']['__file__'] = config_path
+ for key, value in extra_defaults.items():
+ config['DEFAULT'].setdefault(key, value)
+
-def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
+def read_mediagoblin_config(config_path, config_spec_path=CONFIG_SPEC_PATH):
"""
Read a config object from config_path.
@@ -54,7 +60,7 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
Args:
- config_path: path to the config file
- - config_spec: config file that provides defaults and value types
+ - config_spec_path: config file that provides defaults and value types
for validation / conversion. Defaults to mediagoblin/config_spec.ini
Returns:
@@ -68,7 +74,20 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
# we can add their plugin specs to the general config_spec.
config = ConfigObj(
config_path,
- interpolation='ConfigParser')
+ interpolation="ConfigParser")
+
+ # temporary bootstrap, just setup here and __file__... we'll do this again
+ _setup_defaults(config, config_path)
+
+ # Now load the main config spec
+ config_spec = ConfigObj(
+ config_spec_path,
+ encoding="UTF8", list_values=False, _inspec=True)
+
+ # Set up extra defaults that will be pushed into the rest of the
+ # configs. This is a combined extrapolation of defaults based on
+ mainconfig_defaults = copy.copy(config_spec.get("DEFAULT", {}))
+ mainconfig_defaults.update(config["DEFAULT"])
plugins = config.get("plugins", {}).keys()
plugin_configs = {}
@@ -79,11 +98,12 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
plugin, "config_spec.ini")
if not os.path.exists(plugin_config_spec_path):
continue
-
+
plugin_config_spec = ConfigObj(
plugin_config_spec_path,
- encoding='UTF8', list_values=False, _inspec=True)
- _setup_defaults(plugin_config_spec, config_path)
+ encoding="UTF8", list_values=False, _inspec=True)
+ _setup_defaults(
+ plugin_config_spec, config_path, mainconfig_defaults)
if not "plugin_spec" in plugin_config_spec:
continue
@@ -94,23 +114,18 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
_log.warning(
"When setting up config section, could not import '%s'" %
plugin)
-
- # Now load the main config spec
- config_spec = ConfigObj(
- config_spec,
- encoding='UTF8', list_values=False, _inspec=True)
# append the plugin specific sections of the config spec
- config_spec['plugins'] = plugin_configs
+ config_spec["plugins"] = plugin_configs
- _setup_defaults(config_spec, config_path)
+ _setup_defaults(config_spec, config_path, mainconfig_defaults)
config = ConfigObj(
config_path,
configspec=config_spec,
- interpolation='ConfigParser')
+ interpolation="ConfigParser")
- _setup_defaults(config, config_path)
+ _setup_defaults(config, config_path, mainconfig_defaults)
# For now the validator just works with the default functions,
# but in the future if we want to add additional validation/configuration
diff --git a/mediagoblin/listings/views.py b/mediagoblin/listings/views.py
index 07dbb3d5..fa6b5ba7 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -17,9 +17,10 @@
from mediagoblin import mg_globals
from mediagoblin.db.models import MediaEntry
from mediagoblin.db.util import media_entries_for_tag_slug
+from mediagoblin.decorators import uses_pagination
+from mediagoblin.plugins.api.tools import get_media_file_paths
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
-from mediagoblin.decorators import uses_pagination
from werkzeug.contrib.atom import AtomFeed
@@ -72,19 +73,25 @@ def atom_feed(request):
tag_slug = request.matchdict.get(u'tag')
feed_title = "MediaGoblin Feed"
if tag_slug:
- cursor = media_entries_for_tag_slug(request.db, tag_slug)
+ feed_title += " for tag '%s'" % tag_slug
link = request.urlgen('mediagoblin.listings.tags_listing',
qualified=True, tag=tag_slug )
- feed_title += "for tag '%s'" % tag_slug
+ cursor = media_entries_for_tag_slug(request.db, tag_slug)
else: # all recent item feed
- cursor = MediaEntry.query.filter_by(state=u'processed')
+ feed_title += " for all recent items"
link = request.urlgen('index', qualified=True)
- feed_title += "for all recent items"
+ cursor = MediaEntry.query.filter_by(state=u'processed')
+ cursor = cursor.order_by(MediaEntry.created.desc())
+ cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
+
- atomlinks = [
- {'href': link,
- 'rel': 'alternate',
- 'type': 'text/html'}]
+ """
+ ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
+ """
+ atomlinks = [{
+ 'href': link,
+ 'rel': 'alternate',
+ 'type': 'text/html'}]
if mg_globals.app_config["push_urls"]:
for push_url in mg_globals.app_config["push_urls"]:
@@ -92,9 +99,6 @@ def atom_feed(request):
'rel': 'hub',
'href': push_url})
- cursor = cursor.order_by(MediaEntry.created.desc())
- cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
-
feed = AtomFeed(
feed_title,
feed_url=request.url,
@@ -102,19 +106,30 @@ def atom_feed(request):
links=atomlinks)
for entry in cursor:
- feed.add(entry.get('title'),
- entry.description_html,
- id=entry.url_for_self(request.urlgen,qualified=True),
+ # Include a thumbnail image in content.
+ file_urls = get_media_file_paths(entry.media_files, request.urlgen)
+ if 'thumb' in file_urls:
+ content = '<img src="{thumb}" alt='' /> {desc}'.format(
+ thumb=file_urls['thumb'], desc=entry.description_html)
+ else:
+ content = entry.description_html
+
+ feed.add(
+ entry.get('title'),
+ content,
+ id=entry.url_for_self(request.urlgen, qualified=True),
content_type='html',
- author={'name': entry.get_uploader.username,
+ author={
+ 'name': entry.get_actor.username,
'uri': request.urlgen(
'mediagoblin.user_pages.user_home',
- qualified=True, user=entry.get_uploader.username)},
+ qualified=True,
+ user=entry.get_actor.username)},
updated=entry.get('created'),
links=[{
- 'href':entry.url_for_self(
- request.urlgen,
- qualified=True),
+ 'href': entry.url_for_self(
+ request.urlgen,
+ qualified=True),
'rel': 'alternate',
'type': 'text/html'}])
diff --git a/mediagoblin/meddleware/csrf.py b/mediagoblin/meddleware/csrf.py
index 6cad6fa7..9f64f363 100644
--- a/mediagoblin/meddleware/csrf.py
+++ b/mediagoblin/meddleware/csrf.py
@@ -132,8 +132,8 @@ class CsrfMeddleware(BaseMeddleware):
# cookie blocker might be in action (in the best case)
_log.error('CSRF cookie not present')
raise Forbidden(_('CSRF cookie not present. This is most likely '
- 'the result of a cookie blocker or somesuch.<br/>'
- 'Make sure to permit the settings of cookies for '
+ 'the result of a cookie blocker or somesuch. '
+ 'Make sure to permit the setting of cookies for '
'this domain.'))
# get the form token and confirm it matches
diff --git a/mediagoblin/media_types/__init__.py b/mediagoblin/media_types/__init__.py
index 2e392317..9f6043e9 100644
--- a/mediagoblin/media_types/__init__.py
+++ b/mediagoblin/media_types/__init__.py
@@ -16,6 +16,7 @@
import os
import logging
+import shutil
import tempfile
from mediagoblin.tools.pluginapi import hook_handle
@@ -23,10 +24,18 @@ from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
_log = logging.getLogger(__name__)
+
class FileTypeNotSupported(Exception):
pass
-class InvalidFileType(Exception):
+
+class TypeNotFound(FileTypeNotSupported):
+ '''Raised if no mediagoblin plugin supporting this file type was found'''
+ pass
+
+
+class MissingComponents(FileTypeNotSupported):
+ '''Raised if plugin found, but it can't process the file for some reason'''
pass
@@ -50,42 +59,32 @@ class MediaManagerBase(object):
return hasattr(self, i)
-def sniff_media(media_file, filename):
+def sniff_media_contents(media_file, filename):
'''
- Iterate through the enabled media types and find those suited
- for a certain file.
+ Check media contents using 'expensive' scanning. For example, for video it
+ is checking the contents using gstreamer
+ :param media_file: file-like object with 'name' attribute
+ :param filename: expected filename of the media
'''
-
- try:
- return get_media_type_and_manager(filename)
- except FileTypeNotSupported:
- _log.info('No media handler found by file extension. Doing it the expensive way...')
- # Create a temporary file for sniffers suchs as GStreamer-based
- # Audio video
- tmp_media_file = tempfile.NamedTemporaryFile()
- tmp_media_file.write(media_file.read())
- tmp_media_file.seek(0)
- media_file.seek(0)
-
- media_type = hook_handle('sniff_handler', tmp_media_file, filename)
- if media_type:
- _log.info('{0} accepts the file'.format(media_type))
- return media_type, hook_handle(('media_manager', media_type))
- else:
- _log.debug('{0} did not accept the file'.format(media_type))
-
- raise FileTypeNotSupported(
- # TODO: Provide information on which file types are supported
- _(u'Sorry, I don\'t support that file type :('))
-
+ media_type = hook_handle('sniff_handler', media_file, filename)
+ if media_type:
+ _log.info('{0} accepts the file'.format(media_type))
+ return media_type, hook_handle(('media_manager', media_type))
+ else:
+ _log.debug('{0} did not accept the file'.format(media_type))
+ raise FileTypeNotSupported(
+ # TODO: Provide information on which file types are supported
+ _(u'Sorry, I don\'t support that file type :('))
def get_media_type_and_manager(filename):
'''
Try to find the media type based on the file name, extension
specifically. This is used as a speedup, the sniffing functionality
then falls back on more in-depth bitsniffing of the source file.
+
+ This hook is deprecated, 'type_match_handler' should be used instead
'''
- if filename.find('.') > 0:
+ if os.path.basename(filename).find('.') > 0:
# Get the file extension
ext = os.path.splitext(filename)[1].lower()
@@ -97,5 +96,68 @@ def get_media_type_and_manager(filename):
_log.info('File {0} has no file extension, let\'s hope the sniffers get it.'.format(
filename))
- raise FileTypeNotSupported(
+ raise TypeNotFound(
_(u'Sorry, I don\'t support that file type :('))
+
+def type_match_handler(media_file, filename):
+ '''Check media file by name and then by content
+
+ Try to find the media type based on the file name, extension
+ specifically. After that, if media type is one of supported ones, check the
+ contents of the file
+ '''
+ if os.path.basename(filename).find('.') > 0:
+ # Get the file extension
+ ext = os.path.splitext(filename)[1].lower()
+
+ # Omit the dot from the extension and match it against
+ # the media manager
+ hook_result = hook_handle('type_match_handler', ext[1:])
+ if hook_result:
+ _log.info('Info about file found, checking further')
+ MEDIA_TYPE, Manager, sniffer = hook_result
+ if not sniffer:
+ _log.debug('sniffer is None, plugin trusts the extension')
+ return MEDIA_TYPE, Manager
+ _log.info('checking the contents with sniffer')
+ try:
+ sniffer(media_file)
+ _log.info('checked, found')
+ return MEDIA_TYPE, Manager
+ except Exception as e:
+ _log.info('sniffer says it will not accept the file')
+ _log.debug(e)
+ raise
+ else:
+ _log.info('No plugins handled extension {0}'.format(ext))
+ else:
+ _log.info('File {0} has no known file extension, let\'s hope '
+ 'the sniffers get it.'.format(filename))
+ raise TypeNotFound(_(u'Sorry, I don\'t support that file type :('))
+
+
+def sniff_media(media_file, filename):
+ '''
+ Iterate through the enabled media types and find those suited
+ for a certain file.
+ '''
+ # copy the contents to a .name-enabled temporary file for further checks
+ # TODO: there are cases when copying is not required
+ tmp_media_file = tempfile.NamedTemporaryFile()
+ shutil.copyfileobj(media_file, tmp_media_file)
+ media_file.seek(0)
+ tmp_media_file.seek(0)
+ try:
+ return type_match_handler(tmp_media_file, filename)
+ except TypeNotFound as e:
+ _log.info('No plugins using two-step checking found')
+
+ # keep trying, using old `get_media_type_and_manager`
+ try:
+ return get_media_type_and_manager(filename)
+ except TypeNotFound as e:
+ # again, no luck. Do it expensive way
+ _log.info('No media handler found by file extension')
+ _log.info('Doing it the expensive way...')
+ return sniff_media_contents(tmp_media_file, filename)
+
diff --git a/mediagoblin/media_types/ascii/migrations/72bd70f7eefd_ascii_media_type_initial_migration.py b/mediagoblin/media_types/ascii/migrations/72bd70f7eefd_ascii_media_type_initial_migration.py
new file mode 100644
index 00000000..142abe6b
--- /dev/null
+++ b/mediagoblin/media_types/ascii/migrations/72bd70f7eefd_ascii_media_type_initial_migration.py
@@ -0,0 +1,33 @@
+"""Ascii media type initial migration
+
+Revision ID: 72bd70f7eefd
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 22:50:58.382980
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '72bd70f7eefd'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('ascii_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("ascii__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'ascii__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('ascii__mediadata')
diff --git a/mediagoblin/media_types/ascii/processing.py b/mediagoblin/media_types/ascii/processing.py
index 84030362..00d04e63 100644
--- a/mediagoblin/media_types/ascii/processing.py
+++ b/mediagoblin/media_types/ascii/processing.py
@@ -22,6 +22,8 @@ except ImportError:
import Image
import logging
+import six
+
from mediagoblin import mg_globals as mgg
from mediagoblin.processing import (
create_pub_filepath, FilenameBuilder,
@@ -93,7 +95,7 @@ class CommonAsciiProcessor(MediaProcessor):
orig_file.seek(0)
def store_unicode_file(self):
- with file(self.process_filename, 'rb') as orig_file:
+ with open(self.process_filename, 'rb') as orig_file:
self._detect_charset(orig_file)
unicode_filepath = create_pub_filepath(self.entry,
'ascii-portable.txt')
@@ -104,7 +106,7 @@ class CommonAsciiProcessor(MediaProcessor):
# Encode the unicode instance to ASCII and replace any
# non-ASCII with an HTML entity (&#
unicode_file.write(
- unicode(orig_file.read().decode(
+ six.text_type(orig_file.read().decode(
self.charset)).encode(
'ascii',
'xmlcharrefreplace'))
@@ -112,7 +114,7 @@ class CommonAsciiProcessor(MediaProcessor):
self.entry.media_files['unicode'] = unicode_filepath
def generate_thumb(self, font=None, thumb_size=None):
- with file(self.process_filename, 'rb') as orig_file:
+ with open(self.process_filename, 'rb') as orig_file:
# If no font kwarg, check config
if not font:
font = self.ascii_config.get('thumbnail_font', None)
@@ -141,11 +143,8 @@ class CommonAsciiProcessor(MediaProcessor):
thumb = converter._create_image(
orig_file.read())
- with file(tmp_thumb, 'w') as thumb_file:
- thumb.thumbnail(
- thumb_size,
- Image.ANTIALIAS)
- thumb.save(thumb_file)
+ thumb.thumbnail(thumb_size, Image.ANTIALIAS)
+ thumb.save(tmp_thumb);
thumb_info = {'font': font,
'width': thumb_size[0],
@@ -271,6 +270,6 @@ class Resizer(CommonAsciiProcessor):
class AsciiProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(AsciiProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
diff --git a/mediagoblin/media_types/audio/config_spec.ini b/mediagoblin/media_types/audio/config_spec.ini
index 743deaa4..bc1810f7 100644
--- a/mediagoblin/media_types/audio/config_spec.ini
+++ b/mediagoblin/media_types/audio/config_spec.ini
@@ -2,7 +2,6 @@
keep_original = boolean(default=True)
# vorbisenc quality
quality = float(default=0.3)
-create_spectrogram = boolean(default=True)
spectrogram_fft_size = integer(default=4096)
diff --git a/mediagoblin/media_types/audio/migrations/e9212d3a12d3_adding_audio_media_type_initial_.py b/mediagoblin/media_types/audio/migrations/e9212d3a12d3_adding_audio_media_type_initial_.py
new file mode 100644
index 00000000..20d900a8
--- /dev/null
+++ b/mediagoblin/media_types/audio/migrations/e9212d3a12d3_adding_audio_media_type_initial_.py
@@ -0,0 +1,32 @@
+"""Audio media type initial migration
+
+Revision ID: e9212d3a12d3
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 22:37:35.086080
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'e9212d3a12d3'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('audio_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("audio__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'audio__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('audio__mediadata')
diff --git a/mediagoblin/media_types/audio/processing.py b/mediagoblin/media_types/audio/processing.py
index f12f231e..427309de 100644
--- a/mediagoblin/media_types/audio/processing.py
+++ b/mediagoblin/media_types/audio/processing.py
@@ -18,6 +18,8 @@ import argparse
import logging
import os
+import six
+
from mediagoblin import mg_globals as mgg
from mediagoblin.processing import (
BadMediaFail, FilenameBuilder,
@@ -27,6 +29,7 @@ from mediagoblin.processing import (
from mediagoblin.media_types.audio.transcoders import (
AudioTranscoder, AudioThumbnailer)
+from mediagoblin.media_types.tools import discover
_log = logging.getLogger(__name__)
@@ -36,15 +39,12 @@ MEDIA_TYPE = 'mediagoblin.media_types.audio'
def sniff_handler(media_file, filename):
_log.info('Sniffing {0}'.format(MEDIA_TYPE))
try:
- transcoder = AudioTranscoder()
- data = transcoder.discover(media_file.name)
- except BadMediaFail:
- _log.debug('Audio discovery raised BadMediaFail')
+ data = discover(media_file.name)
+ except Exception as e:
+ _log.info(six.text_type(e))
return None
-
- if data.is_audio is True and data.is_video is False:
+ if data and data.get_audio_streams() and not data.get_video_streams():
return MEDIA_TYPE
-
return None
@@ -126,8 +126,6 @@ class CommonAudioProcessor(MediaProcessor):
quality=quality,
progress_callback=progress_callback)
- self.transcoder.discover(webm_audio_tmp)
-
self._keep_best()
_log.debug('Saving medium...')
@@ -145,21 +143,14 @@ class CommonAudioProcessor(MediaProcessor):
if self._skip_processing('spectrogram', max_width=max_width,
fft_size=fft_size):
return
-
wav_tmp = os.path.join(self.workbench.dir, self.name_builder.fill(
'{basename}.ogg'))
-
_log.info('Creating OGG source for spectrogram')
- self.transcoder.transcode(
- self.process_filename,
- wav_tmp,
- mux_string='vorbisenc quality={0} ! oggmux'.format(
- self.audio_config['quality']))
-
+ self.transcoder.transcode(self.process_filename, wav_tmp,
+ mux_name='oggmux')
spectrogram_tmp = os.path.join(self.workbench.dir,
self.name_builder.fill(
'{basename}-spectrogram.jpg'))
-
self.thumbnailer.spectrogram(
wav_tmp,
spectrogram_tmp,
@@ -251,32 +242,24 @@ class InitialProcessor(CommonAudioProcessor):
type=int,
help='The width of the spectogram')
- parser.add_argument(
- '--create_spectrogram',
- action='store_true',
- help='Create spectogram and thumbnail, will default to config')
-
return parser
@classmethod
def args_to_request(cls, args):
return request_from_args(
- args, ['create_spectrogram', 'quality', 'fft_size',
+ args, ['quality', 'fft_size',
'thumb_size', 'medium_width'])
def process(self, quality=None, fft_size=None, thumb_size=None,
- create_spectrogram=None, medium_width=None):
+ medium_width=None):
self.common_setup()
- if not create_spectrogram:
- create_spectrogram = self.audio_config['create_spectrogram']
-
self.transcode(quality=quality)
self.copy_original()
- if create_spectrogram:
- self.create_spectrogram(max_width=medium_width, fft_size=fft_size)
- self.generate_thumb(size=thumb_size)
+ self.create_spectrogram(max_width=medium_width, fft_size=fft_size)
+ self.generate_thumb(size=thumb_size)
+
self.delete_queue_file()
@@ -378,7 +361,7 @@ class Transcoder(CommonAudioProcessor):
class AudioProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(AudioProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
self.add_processor(Transcoder)
diff --git a/mediagoblin/media_types/audio/spectrogram.py b/mediagoblin/media_types/audio/spectrogram.py
index dd4d0299..433bb300 100644
--- a/mediagoblin/media_types/audio/spectrogram.py
+++ b/mediagoblin/media_types/audio/spectrogram.py
@@ -19,6 +19,8 @@
# Bram de Jong <bram.dejong at domain.com where domain in gmail>
# 2012, Joar Wandborg <first name at last name dot se>
+from __future__ import print_function
+
try:
from PIL import Image
except ImportError:
@@ -29,7 +31,7 @@ import numpy
try:
import scikits.audiolab as audiolab
except ImportError:
- print "WARNING: audiolab is not installed so wav2png will not work"
+ print("WARNING: audiolab is not installed so wav2png will not work")
class AudioProcessingException(Exception):
diff --git a/mediagoblin/media_types/audio/transcoders.py b/mediagoblin/media_types/audio/transcoders.py
index 150dad8e..f86528de 100644
--- a/mediagoblin/media_types/audio/transcoders.py
+++ b/mediagoblin/media_types/audio/transcoders.py
@@ -20,10 +20,8 @@ try:
except ImportError:
import Image
-from mediagoblin.processing import BadMediaFail
from mediagoblin.media_types.audio import audioprocessing
-
_log = logging.getLogger(__name__)
CPU_COUNT = 2 # Just assuming for now
@@ -39,26 +37,13 @@ try:
except ImportError:
_log.warning('Could not import multiprocessing, assuming 2 CPU cores')
-# IMPORT GOBJECT
-try:
- import gobject
- gobject.threads_init()
-except ImportError:
- raise Exception('gobject could not be found')
-
-# IMPORT PYGST
-try:
- import pygst
-
- # We won't settle for less. For now, this is an arbitrary limit
- # as we have not tested with > 0.10
- pygst.require('0.10')
+# uncomment this to get a lot of logs from gst
+# import os;os.environ['GST_DEBUG'] = '5,python:5'
- import gst
-
- import gst.extend.discoverer
-except ImportError:
- raise Exception('gst/pygst >= 0.10 could not be imported')
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import GObject, Gst
+Gst.init(None)
import numpy
@@ -72,7 +57,6 @@ class AudioThumbnailer(object):
height = int(kw.get('height', float(width) * 0.3))
fft_size = kw.get('fft_size', 2048)
callback = kw.get('progress_callback')
-
processor = audioprocessing.AudioProcessor(
src,
fft_size,
@@ -132,95 +116,87 @@ class AudioTranscoder(object):
_log.info('Initializing {0}'.format(self.__class__.__name__))
# Instantiate MainLoop
- self._loop = gobject.MainLoop()
+ self._loop = GObject.MainLoop()
self._failed = None
- def discover(self, src):
- self._src_path = src
- _log.info('Discovering {0}'.format(src))
- self._discovery_path = src
-
- self._discoverer = gst.extend.discoverer.Discoverer(
- self._discovery_path)
- self._discoverer.connect('discovered', self.__on_discovered)
- self._discoverer.discover()
-
- self._loop.run() # Run MainLoop
-
- if self._failed:
- raise self._failed
-
- # Once MainLoop has returned, return discovery data
- return getattr(self, '_discovery_data', False)
-
- def __on_discovered(self, data, is_media):
- if not is_media:
- self._failed = BadMediaFail()
- _log.error('Could not discover {0}'.format(self._src_path))
- self.halt()
-
- _log.debug('Discovered: {0}'.format(data.__dict__))
-
- self._discovery_data = data
-
- # Gracefully shut down MainLoop
- self.halt()
-
- def transcode(self, src, dst, **kw):
+ def transcode(self, src, dst, mux_name='webmmux',quality=0.3,
+ progress_callback=None, **kw):
+ def _on_pad_added(element, pad, connect_to):
+ caps = pad.query_caps(None)
+ name = caps.to_string()
+ _log.debug('on_pad_added: {0}'.format(name))
+ if name.startswith('audio') and not connect_to.is_linked():
+ pad.link(connect_to)
_log.info('Transcoding {0} into {1}'.format(src, dst))
- self._discovery_data = kw.get('data', self.discover(src))
-
- self.__on_progress = kw.get('progress_callback')
-
- quality = kw.get('quality', 0.3)
-
- mux_string = kw.get(
- 'mux_string',
- 'vorbisenc quality={0} ! webmmux'.format(quality))
-
+ self.__on_progress = progress_callback
# Set up pipeline
- self.pipeline = gst.parse_launch(
- 'filesrc location="{src}" ! '
- 'decodebin2 ! queue ! audiorate tolerance={tolerance} ! '
- 'audioconvert ! audio/x-raw-float,channels=2 ! '
- '{mux_string} ! '
- 'progressreport silent=true ! '
- 'filesink location="{dst}"'.format(
- src=src,
- tolerance=80000000,
- mux_string=mux_string,
- dst=dst))
-
+ tolerance = 80000000
+ self.pipeline = Gst.Pipeline()
+ filesrc = Gst.ElementFactory.make('filesrc', 'filesrc')
+ filesrc.set_property('location', src)
+ decodebin = Gst.ElementFactory.make('decodebin', 'decodebin')
+ queue = Gst.ElementFactory.make('queue', 'queue')
+ decodebin.connect('pad-added', _on_pad_added,
+ queue.get_static_pad('sink'))
+ audiorate = Gst.ElementFactory.make('audiorate', 'audiorate')
+ audiorate.set_property('tolerance', tolerance)
+ audioconvert = Gst.ElementFactory.make('audioconvert', 'audioconvert')
+ caps_struct = Gst.Structure.new_empty('audio/x-raw')
+ caps_struct.set_value('channels', 2)
+ caps = Gst.Caps.new_empty()
+ caps.append_structure(caps_struct)
+ capsfilter = Gst.ElementFactory.make('capsfilter', 'capsfilter')
+ capsfilter.set_property('caps', caps)
+ enc = Gst.ElementFactory.make('vorbisenc', 'enc')
+ enc.set_property('quality', quality)
+ mux = Gst.ElementFactory.make(mux_name, 'mux')
+ progressreport = Gst.ElementFactory.make('progressreport', 'progress')
+ progressreport.set_property('silent', True)
+ sink = Gst.ElementFactory.make('filesink', 'sink')
+ sink.set_property('location', dst)
+ # add to pipeline
+ for e in [filesrc, decodebin, queue, audiorate, audioconvert,
+ capsfilter, enc, mux, progressreport, sink]:
+ self.pipeline.add(e)
+ # link elements
+ filesrc.link(decodebin)
+ decodebin.link(queue)
+ queue.link(audiorate)
+ audiorate.link(audioconvert)
+ audioconvert.link(capsfilter)
+ capsfilter.link(enc)
+ enc.link(mux)
+ mux.link(progressreport)
+ progressreport.link(sink)
self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch()
self.bus.connect('message', self.__on_bus_message)
-
- self.pipeline.set_state(gst.STATE_PLAYING)
-
+ # run
+ self.pipeline.set_state(Gst.State.PLAYING)
self._loop.run()
def __on_bus_message(self, bus, message):
- _log.debug(message)
-
- if (message.type == gst.MESSAGE_ELEMENT
- and message.structure.get_name() == 'progress'):
- data = dict(message.structure)
-
- if self.__on_progress:
- self.__on_progress(data.get('percent'))
-
- _log.info('{0}% done...'.format(
- data.get('percent')))
- elif message.type == gst.MESSAGE_EOS:
+ _log.debug(message.type)
+ if (message.type == Gst.MessageType.ELEMENT
+ and message.has_name('progress')):
+ structure = message.get_structure()
+ (success, percent) = structure.get_int('percent')
+ if self.__on_progress and success:
+ self.__on_progress(percent)
+ _log.info('{0}% done...'.format(percent))
+ elif message.type == Gst.MessageType.EOS:
_log.info('Done')
self.halt()
+ elif message.type == Gst.MessageType.ERROR:
+ _log.error(message.parse_error())
+ self.halt()
def halt(self):
if getattr(self, 'pipeline', False):
- self.pipeline.set_state(gst.STATE_NULL)
+ self.pipeline.set_state(Gst.State.NULL)
del self.pipeline
_log.info('Quitting MainLoop gracefully...')
- gobject.idle_add(self._loop.quit)
+ GObject.idle_add(self._loop.quit)
if __name__ == '__main__':
import sys
diff --git a/mediagoblin/media_types/blog/forms.py b/mediagoblin/media_types/blog/forms.py
index 1cc41a02..12857e28 100644
--- a/mediagoblin/media_types/blog/forms.py
+++ b/mediagoblin/media_types/blog/forms.py
@@ -21,26 +21,25 @@ from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
from mediagoblin.tools.licenses import licenses_as_choices
class BlogPostEditForm(wtforms.Form):
- title = wtforms.TextField(_('Title'),
- [wtforms.validators.Length(min=0, max=500)])
+ title = wtforms.StringField(_('Title'),
+ [wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField(_('Description'))
- tags = wtforms.TextField(_('Tags'), [tag_length_validator],
- description="Seperate tags by commas.")
- license = wtforms.SelectField(_('License'),
- [wtforms.validators.Optional(),], choices=licenses_as_choices())
+ tags = wtforms.StringField(
+ _('Tags'), [tag_length_validator],
+ description="Seperate tags by commas."
+ )
+ license = wtforms.SelectField(
+ _('License'),
+ [wtforms.validators.Optional()],
+ choices=licenses_as_choices()
+ )
class BlogEditForm(wtforms.Form):
- title = wtforms.TextField(_('Title'),
- [wtforms.validators.Length(min=0, max=500)])
+ title = wtforms.StringField(_('Title'),
+ [wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField(_('Description'))
class ConfirmDeleteForm(wtforms.Form):
confirm = wtforms.BooleanField(
_('I am sure I want to delete this'))
-
-
-
-
-
-
diff --git a/mediagoblin/media_types/blog/migrations/562bc42a8fff_blog_media_type_initial_migration.py b/mediagoblin/media_types/blog/migrations/562bc42a8fff_blog_media_type_initial_migration.py
new file mode 100644
index 00000000..cfd9ef6c
--- /dev/null
+++ b/mediagoblin/media_types/blog/migrations/562bc42a8fff_blog_media_type_initial_migration.py
@@ -0,0 +1,59 @@
+"""Blog media type initial migration
+
+Revision ID: 562bc42a8fff
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:17:45.477894
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '562bc42a8fff'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('blog_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("blogpost__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'mediatype__blogs',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('title', sa.Unicode(), nullable=True),
+ sa.Column('description', sa.UnicodeText(), nullable=True),
+ sa.Column('author', sa.Integer(), nullable=False),
+ sa.Column('created', sa.DateTime(), nullable=False),
+ sa.Column('slug', sa.Unicode(), nullable=True),
+ sa.ForeignKeyConstraint(['author'], ['core__users.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+ op.create_index(
+ op.f('ix_mediatype__blogs_author'),
+ 'mediatype__blogs', ['author'], unique=False)
+
+ op.create_index(
+ op.f('ix_mediatype__blogs_created'),
+ 'mediatype__blogs', ['created'], unique=False)
+
+ op.create_table(
+ 'blogpost__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('blog', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['blog'], ['mediatype__blogs.id']),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id']),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('blogpost__mediadata')
+ op.drop_index(op.f('ix_mediatype__blogs_created'),
+ table_name='mediatype__blogs')
+ op.drop_index(op.f('ix_mediatype__blogs_author'),
+ table_name='mediatype__blogs')
+ op.drop_table('mediatype__blogs')
diff --git a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html
index 1316083b..3b881466 100644
--- a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html
+++ b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_admin_dashboard.html
@@ -86,7 +86,7 @@
blog_slug=blog.slug, user=request.user.username,
blog_post_slug=blog_post.slug) %}
{% set blogpost_delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
- user= blog_post.get_uploader.username,
+ user= blog_post.get_actor.username,
media_id=blog_post.id) %}
<td>
<a class="button_action" href="{{ blogpost_edit_url }}">{% trans %}Edit{% endtrans %}</a>
diff --git a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
index 0013f1a3..3a0fd23d 100644
--- a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
+++ b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
@@ -48,7 +48,7 @@
<a href="{{ request.urlgen(
'mediagoblin.user_pages.user_tag_gallery',
tag=tag['slug'],
- user=post.get_uploader.username) }}">{{ tag['name'] }} |</a>
+ user=post.get_actor.username) }}">{{ tag['name'] }} |</a>
{% endfor %}
{% endif %}
<div class="b_list_des"> <p>{{ post.description|safe }} </p></div>
diff --git a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html
index 7c634877..6d820550 100644
--- a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html
+++ b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blogpost_draft_view.html
@@ -30,7 +30,7 @@
blog_slug=blog.slug, user=request.user.username,
blog_post_slug=blogpost.slug) %}
{% set blogpost_delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
- user= blogpost.get_uploader.username,
+ user= blogpost.get_actor.username,
media_id=blogpost.id) %}
<a class="button_action" href="{{ blogpost_edit_url }}">{% trans %}Edit{% endtrans %}</a>
<a class="button_action" href="{{ blogpost_delete_url }}">{% trans %}Delete{% endtrans %}</a>
diff --git a/mediagoblin/media_types/blog/views.py b/mediagoblin/media_types/blog/views.py
index a367bef8..f1d5c49d 100644
--- a/mediagoblin/media_types/blog/views.py
+++ b/mediagoblin/media_types/blog/views.py
@@ -19,10 +19,12 @@ _log = logging.getLogger(__name__)
from datetime import datetime
+import six
+
from werkzeug.exceptions import Forbidden
from mediagoblin.tools import pluginapi
-from mediagoblin import mg_globals
+from mediagoblin import messages, mg_globals
from mediagoblin.media_types.blog import forms as blog_forms
from mediagoblin.media_types.blog.models import Blog, BlogPostData
@@ -30,7 +32,6 @@ from mediagoblin.media_types.blog.lib import (
may_edit_blogpost, set_blogpost_state, get_all_blogposts_of_blog,
get_blog_by_slug)
-from mediagoblin.messages import add_message, SUCCESS, ERROR
from mediagoblin.decorators import (require_active_login, active_user_from_url,
get_media_entry_by_id, user_may_alter_collection,
get_user_collection, uses_pagination)
@@ -44,7 +45,7 @@ from mediagoblin.tools.text import (
cleaned_markdown_conversion)
from mediagoblin.db.util import check_media_slug_used, check_collection_slug_used
-from mediagoblin.db.models import User, Collection, MediaEntry
+from mediagoblin.db.models import User, Collection, MediaEntry, LocalUser
from mediagoblin.notifications import add_comment_subscription
@@ -52,7 +53,7 @@ from mediagoblin.notifications import add_comment_subscription
@require_active_login
def blog_edit(request):
"""
- View for editing an existing blog or creating a new blog
+ View for editing an existing blog or creating a new blog
if user have not exceeded maximum allowed acount of blogs.
"""
url_user = request.matchdict.get('user', None)
@@ -75,8 +76,8 @@ def blog_edit(request):
if request.method=='POST' and form.validate():
_log.info("Here")
blog = request.db.Blog()
- blog.title = unicode(form.title.data)
- blog.description = unicode(cleaned_markdown_conversion((form.description.data)))
+ blog.title = six.text_type(form.title.data)
+ blog.description = six.text_type(cleaned_markdown_conversion((form.description.data)))
blog.author = request.user.id
blog.generate_slug()
@@ -85,8 +86,10 @@ def blog_edit(request):
user=request.user.username
)
else:
- add_message(request, ERROR, "Welcome! You already have created \
- maximum number of blogs.")
+ messages.add_message(
+ request,
+ messages.ERROR,
+ "Welcome! You already have created maximum number of blogs.")
return redirect(request, "mediagoblin.media_types.blog.blog_admin_dashboard",
user=request.user.username)
@@ -112,13 +115,16 @@ def blog_edit(request):
'app_config': mg_globals.app_config})
else:
if request.method == 'POST' and form.validate():
- blog.title = unicode(form.title.data)
- blog.description = unicode(cleaned_markdown_conversion((form.description.data)))
+ blog.title = six.text_type(form.title.data)
+ blog.description = six.text_type(cleaned_markdown_conversion((form.description.data)))
blog.author = request.user.id
blog.generate_slug()
blog.save()
- add_message(request, SUCCESS, "Your blog is updated.")
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ "Your blog is updated.")
return redirect(request, "mediagoblin.media_types.blog.blog-dashboard",
user=request.user.username,
blog_slug=blog.slug)
@@ -137,11 +143,11 @@ def blogpost_create(request):
blogpost = request.db.MediaEntry()
blogpost.media_type = 'mediagoblin.media_types.blogpost'
- blogpost.title = unicode(form.title.data)
- blogpost.description = unicode(cleaned_markdown_conversion((form.description.data)))
+ blogpost.title = six.text_type(form.title.data)
+ blogpost.description = six.text_type(cleaned_markdown_conversion((form.description.data)))
blogpost.tags = convert_to_tag_list_of_dicts(form.tags.data)
- blogpost.license = unicode(form.license.data) or None
- blogpost.uploader = request.user.id
+ blogpost.license = six.text_type(form.license.data) or None
+ blogpost.actor = request.user.id
blogpost.generate_slug()
set_blogpost_state(request, blogpost)
@@ -153,7 +159,10 @@ def blogpost_create(request):
blog_post_data.media_entry = blogpost.id
blog_post_data.save()
- add_message(request, SUCCESS, _('Woohoo! Submitted!'))
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('Woohoo! Submitted!'))
add_comment_subscription(request.user, blogpost)
return redirect(request, "mediagoblin.media_types.blog.blog-dashboard",
user=request.user.username,
@@ -169,11 +178,11 @@ def blogpost_create(request):
@require_active_login
def blogpost_edit(request):
-
+
blog_slug = request.matchdict.get('blog_slug', None)
blog_post_slug = request.matchdict.get('blog_post_slug', None)
- blogpost = request.db.MediaEntry.query.filter_by(slug=blog_post_slug, uploader=request.user.id).first()
+ blogpost = request.db.MediaEntry.query.filter_by(slug=blog_post_slug, actor=request.user.id).first()
blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
if not blogpost or not blog:
@@ -187,15 +196,18 @@ def blogpost_edit(request):
form = blog_forms.BlogPostEditForm(request.form, **defaults)
if request.method == 'POST' and form.validate():
- blogpost.title = unicode(form.title.data)
- blogpost.description = unicode(cleaned_markdown_conversion((form.description.data)))
+ blogpost.title = six.text_type(form.title.data)
+ blogpost.description = six.text_type(cleaned_markdown_conversion((form.description.data)))
blogpost.tags = convert_to_tag_list_of_dicts(form.tags.data)
- blogpost.license = unicode(form.license.data)
+ blogpost.license = six.text_type(form.license.data)
set_blogpost_state(request, blogpost)
blogpost.generate_slug()
blogpost.save()
- add_message(request, SUCCESS, _('Woohoo! edited blogpost is submitted'))
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('Woohoo! edited blogpost is submitted'))
return redirect(request, "mediagoblin.media_types.blog.blog-dashboard",
user=request.user.username,
blog_slug=blog.slug)
@@ -259,8 +271,8 @@ def blog_post_listing(request, page, url_user=None):
"""
Page, listing all the blog posts of a particular blog.
"""
- blog_slug = request.matchdict.get('blog_slug', None)
- blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
+ blog_slug = request.matchdict['blog_slug']
+ blog = get_blog_by_slug(request, blog_slug, author=url_user.id)
if not blog:
return render_404(request)
@@ -277,7 +289,7 @@ def blog_post_listing(request, page, url_user=None):
'blog_owner': url_user,
'blog':blog
})
-
+
@require_active_login
def draft_view(request):
@@ -285,7 +297,7 @@ def draft_view(request):
blog_post_slug = request.matchdict.get('blog_post_slug', None)
user = request.matchdict.get('user')
blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
- blogpost = request.db.MediaEntry.query.filter_by(state = u'failed', uploader=request.user.id, slug=blog_post_slug).first()
+ blogpost = request.db.MediaEntry.query.filter_by(state = u'failed', actor=request.user.id, slug=blog_post_slug).first()
if not blog or not blogpost:
return render_404(request)
@@ -296,40 +308,47 @@ def draft_view(request):
{'blogpost':blogpost,
'blog': blog
})
-
-
+
+
@require_active_login
def blog_delete(request, **kwargs):
"""
- Deletes a blog and media entries, tags associated with it.
+ Deletes a blog and media entries, tags associated with it.
"""
url_user = request.matchdict.get('user')
- owner_user = request.db.User.query.filter_by(username=url_user).first()
+ owner_user = request.db.LocalUser.query.filter(
+ LocalUser.username==url_user
+ ).first()
blog_slug = request.matchdict.get('blog_slug', None)
blog = get_blog_by_slug(request, blog_slug, author=owner_user.id)
if not blog:
- return render_404(reequest)
+ return render_404(request)
form = blog_forms.ConfirmDeleteForm(request.form)
if request.user.id == blog.author or request.user.has_privilege(u'admin'):
if request.method == 'POST' and form.validate():
if form.confirm.data is True:
blog.delete()
- add_message(
- request, SUCCESS, _('You deleted the Blog.'))
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('You deleted the Blog.'))
return redirect(request, "mediagoblin.media_types.blog.blog_admin_dashboard",
user=request.user.username)
else:
- add_message(
- request, ERROR,
- _("The media was not deleted because you didn't check that you were sure."))
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _("The media was not deleted because you didn't check "
+ "that you were sure."))
return redirect(request, "mediagoblin.media_types.blog.blog_admin_dashboard",
user=request.user.username)
else:
if request.user.has_privilege(u'admin'):
- add_message(
- request, WARNING,
+ messages.add_message(
+ request,
+ messages.WARNING,
_("You are about to delete another user's Blog. "
"Proceed with caution."))
return render_to_response(
@@ -339,26 +358,29 @@ def blog_delete(request, **kwargs):
'form':form
})
else:
- add_message(
- request, ERROR,
- _("The blog was not deleted because you have no rights."))
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _("The blog was not deleted because you have no rights."))
return redirect(request, "mediagoblin.media_types.blog.blog_admin_dashboard",
user=request.user.username)
-
-
+
+
def blog_about_view(request):
"""
Page containing blog description and statistics
"""
blog_slug = request.matchdict.get('blog_slug', None)
url_user = request.matchdict.get('user', None)
-
- user = request.db.User.query.filter_by(username=url_user).first()
+
+ user = request.db.LocalUser.query.filter(
+ LocalUser.username==url_user
+ ).first()
blog = get_blog_by_slug(request, blog_slug, author=user.id)
-
+
if not user or not blog:
return render_404(request)
-
+
else:
blog_posts_processed = blog.get_all_blog_posts(u'processed').count()
return render_to_response(
@@ -368,11 +390,3 @@ def blog_about_view(request):
'blog': blog,
'blogpost_count': blog_posts_processed
})
-
-
-
-
-
-
-
-
diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py
index f5b49f01..11f90ca5 100644
--- a/mediagoblin/media_types/image/__init__.py
+++ b/mediagoblin/media_types/image/__init__.py
@@ -20,15 +20,12 @@ from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.image.processing import sniff_handler, \
ImageProcessingManager
-
_log = logging.getLogger(__name__)
-ACCEPTED_EXTENSIONS = ["jpg", "jpeg", "png", "gif", "tiff"]
+ACCEPTED_EXTENSIONS = ["jpe", "jpg", "jpeg", "png", "gif", "tiff"]
MEDIA_TYPE = 'mediagoblin.media_types.image'
-def setup_plugin():
- config = pluginapi.get_config(MEDIA_TYPE)
class ImageMediaManager(MediaManagerBase):
human_readable = "Image"
@@ -58,7 +55,6 @@ class ImageMediaManager(MediaManagerBase):
except (KeyError, ValueError):
return None
-
def get_media_type_and_manager(ext):
if ext in ACCEPTED_EXTENSIONS:
return MEDIA_TYPE, ImageMediaManager
diff --git a/mediagoblin/media_types/image/migrations.py b/mediagoblin/media_types/image/migrations.py
index f54c23ea..83f5dc8e 100644
--- a/mediagoblin/media_types/image/migrations.py
+++ b/mediagoblin/media_types/image/migrations.py
@@ -13,5 +13,61 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import json
+
+from sqlalchemy import MetaData, Column, ForeignKey
+
+from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
+
MIGRATIONS = {}
+
+@RegisterMigration(1, MIGRATIONS)
+def remove_gps_from_image(db):
+ """
+ This will remove GPS coordinates from the image model to put them
+ on the new Location model.
+ """
+ metadata = MetaData(bind=db.bind)
+ image_table = inspect_table(metadata, "image__mediadata")
+ location_table = inspect_table(metadata, "core__locations")
+ media_entries_table = inspect_table(metadata, "core__media_entries")
+
+ # First do the data migration
+ for row in db.execute(image_table.select()):
+ fields = {
+ "longitude": row.gps_longitude,
+ "latitude": row.gps_latitude,
+ "altitude": row.gps_altitude,
+ "direction": row.gps_direction,
+ }
+
+ # Remove empty values
+ for k, v in fields.items():
+ if v is None:
+ del fields[k]
+
+ # No point in adding empty locations
+ if not fields:
+ continue
+
+ # JSONEncoded is actually a string field just json.dumped
+ # without the ORM we're responsible for that.
+ fields = json.dumps(fields)
+
+ location = db.execute(location_table.insert().values(position=fields))
+
+ # now store the new location model on Image
+ db.execute(media_entries_table.update().values(
+ location=location.inserted_primary_key[0]
+ ).where(media_entries_table.c.id==row.media_entry))
+
+ db.commit()
+
+ # All that data has been migrated across lets remove the fields
+ image_table.columns["gps_longitude"].drop()
+ image_table.columns["gps_latitude"].drop()
+ image_table.columns["gps_altitude"].drop()
+ image_table.columns["gps_direction"].drop()
+
+ db.commit()
diff --git a/mediagoblin/media_types/image/migrations/a98c1a320e88_image_media_type_initial.py b/mediagoblin/media_types/image/migrations/a98c1a320e88_image_media_type_initial.py
new file mode 100644
index 00000000..1ba73a28
--- /dev/null
+++ b/mediagoblin/media_types/image/migrations/a98c1a320e88_image_media_type_initial.py
@@ -0,0 +1,36 @@
+"""Image media type initial migration
+
+Revision ID: a98c1a320e88
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 21:10:10.155623
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'a98c1a320e88'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('image_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("image__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'image__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('width', sa.Integer(), nullable=True),
+ sa.Column('height', sa.Integer(), nullable=True),
+ sa.Column('exif_all', sa.UnicodeText(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ # @@: Is this safe?
+ op.drop_table('image__mediadata')
diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py
index b2ea3960..02040ec2 100644
--- a/mediagoblin/media_types/image/models.py
+++ b/mediagoblin/media_types/image/models.py
@@ -39,10 +39,6 @@ class ImageData(Base):
width = Column(Integer)
height = Column(Integer)
exif_all = Column(JSONEncoded)
- gps_longitude = Column(Float)
- gps_latitude = Column(Float)
- gps_altitude = Column(Float)
- gps_direction = Column(Float)
DATA_MODEL = ImageData
diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py
index 1db82ee7..14091d6e 100644
--- a/mediagoblin/media_types/image/processing.py
+++ b/mediagoblin/media_types/image/processing.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
+
try:
from PIL import Image
except ImportError:
@@ -22,7 +24,10 @@ import os
import logging
import argparse
+import six
+
from mediagoblin import mg_globals as mgg
+from mediagoblin.db.models import Location
from mediagoblin.processing import (
BadMediaFail, FilenameBuilder,
MediaProcessor, ProcessingManager,
@@ -65,15 +70,14 @@ def resize_image(entry, resized, keyname, target_name, new_size,
resize_filter = PIL_FILTERS[filter.upper()]
except KeyError:
raise Exception('Filter "{0}" not found, choose one of {1}'.format(
- unicode(filter),
+ six.text_type(filter),
u', '.join(PIL_FILTERS.keys())))
resized.thumbnail(new_size, resize_filter)
# Copy the new file to the conversion subdir, then remotely.
tmp_resized_filename = os.path.join(workdir, target_name)
- with file(tmp_resized_filename, 'w') as resized_file:
- resized.save(resized_file, quality=quality)
+ resized.save(tmp_resized_filename, quality=quality)
store_public(entry, keyname, tmp_resized_filename, target_name)
# store the thumb/medium info
@@ -114,7 +118,7 @@ def resize_tool(entry,
or im.size[1] > new_size[1]\
or exif_image_needs_rotation(exif_tags):
resize_image(
- entry, im, unicode(keyname), target_name,
+ entry, im, six.text_type(keyname), target_name,
tuple(new_size),
exif_tags, conversions_subdir,
quality, filter)
@@ -220,20 +224,32 @@ class CommonImageProcessor(MediaProcessor):
self.entry, self.process_filename,
self.name_builder.fill('{basename}{ext}'))
- def extract_metadata(self):
- # Is there any GPS data
+ def extract_metadata(self, file):
+ """ Extract all the metadata from the image and store """
+ # Extract GPS data and store in Location
gps_data = get_gps_data(self.exif_tags)
+ if len(gps_data):
+ Location.create({"position": gps_data}, self.entry)
+
# Insert exif data into database
exif_all = clean_exif(self.exif_tags)
if len(exif_all):
self.entry.media_data_init(exif_all=exif_all)
- if len(gps_data):
- for key in list(gps_data.keys()):
- gps_data['gps_' + key] = gps_data.pop(key)
- self.entry.media_data_init(**gps_data)
+ # Extract file metadata
+ try:
+ im = Image.open(self.process_filename)
+ except IOError:
+ raise BadMediaFail()
+
+ metadata = {
+ "width": im.size[0],
+ "height": im.size[1],
+ }
+
+ self.entry.set_file_metadata(file, **metadata)
class InitialProcessor(CommonImageProcessor):
@@ -248,6 +264,9 @@ class InitialProcessor(CommonImageProcessor):
"""
Determine if this media type is eligible for processing
"""
+ if entry is None and state is None:
+ raise ValueError("Must specify either entry or state")
+
if not state:
state = entry.state
return state in (
@@ -297,7 +316,7 @@ class InitialProcessor(CommonImageProcessor):
quality=quality)
self.generate_thumb(size=thumb_size, filter=filter, quality=quality)
self.copy_original()
- self.extract_metadata()
+ self.extract_metadata('original')
self.delete_queue_file()
@@ -314,6 +333,9 @@ class Resizer(CommonImageProcessor):
"""
Determine if this media type is eligible for processing
"""
+ if entry is None and state is None:
+ raise ValueError("Must specify either entry or state")
+
if not state:
state = entry.state
return state in 'processed'
@@ -362,13 +384,52 @@ class Resizer(CommonImageProcessor):
elif file == 'thumb':
self.generate_thumb(size=size, filter=filter, quality=quality)
+ self.extract_metadata(file)
+
+class MetadataProcessing(CommonImageProcessor):
+ """ Extraction and storage of media's metadata for processed images """
+
+ name = 'metadatabuilder'
+ description = 'Add or update image metadata'
+
+ @classmethod
+ def media_is_eligible(cls, entry=None, state=None):
+ if entry is None and state is None:
+ raise ValueError("Must specify either entry or state")
+
+ if state is None:
+ state = entry.state
+
+ return state == 'processed'
+
+ @classmethod
+ def generate_parser(cls):
+ parser = argparse.ArgumentParser(
+ description=cls.description,
+ prog=cls.name
+ )
+
+ parser.add_argument(
+ 'file',
+ choices=['original', 'medium', 'thumb']
+ )
+
+ return parser
+
+ @classmethod
+ def args_to_request(cls, args):
+ return request_from_args(args, ['file'])
+
+ def process(self, file):
+ self.common_setup()
+ self.extract_metadata(file)
class ImageProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(ImageProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
-
+ self.add_processor(MetadataProcessing)
if __name__ == '__main__':
import sys
@@ -381,5 +442,4 @@ if __name__ == '__main__':
clean = clean_exif(result)
useful = get_useful(clean)
- print pp.pprint(
- clean)
+ print(pp.pprint(clean))
diff --git a/mediagoblin/media_types/pdf/migrations/faa209f143b5_pdf_media_type_initial_migration.py b/mediagoblin/media_types/pdf/migrations/faa209f143b5_pdf_media_type_initial_migration.py
new file mode 100644
index 00000000..102f2f3d
--- /dev/null
+++ b/mediagoblin/media_types/pdf/migrations/faa209f143b5_pdf_media_type_initial_migration.py
@@ -0,0 +1,46 @@
+"""PDF media type initial migration
+
+Revision ID: faa209f143b5
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:08:16.698343
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'faa209f143b5'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('pdf_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("pdf__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'pdf__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('pages', sa.Integer(), nullable=True),
+ sa.Column('pdf_author', sa.String(), nullable=True),
+ sa.Column('pdf_title', sa.String(), nullable=True),
+ sa.Column('pdf_keywords', sa.String(), nullable=True),
+ sa.Column('pdf_creator', sa.String(), nullable=True),
+ sa.Column('pdf_producer', sa.String(), nullable=True),
+ sa.Column('pdf_creation_date', sa.DateTime(), nullable=True),
+ sa.Column('pdf_modified_date', sa.DateTime(), nullable=True),
+ sa.Column('pdf_version_major', sa.Integer(), nullable=True),
+ sa.Column('pdf_version_minor', sa.Integer(), nullable=True),
+ sa.Column('pdf_page_size_width', sa.Float(), nullable=True),
+ sa.Column('pdf_page_size_height', sa.Float(), nullable=True),
+ sa.Column('pdf_pages', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('pdf__mediadata')
diff --git a/mediagoblin/media_types/pdf/processing.py b/mediagoblin/media_types/pdf/processing.py
index a000007a..ac4bab6d 100644
--- a/mediagoblin/media_types/pdf/processing.py
+++ b/mediagoblin/media_types/pdf/processing.py
@@ -138,10 +138,10 @@ def is_unoconv_working():
try:
proc = Popen([unoconv, '--show'], stderr=PIPE)
output = proc.stderr.read()
- except OSError, e:
+ except OSError:
_log.warn(_('unoconv failing to run, check log file'))
return False
- if 'ERROR' in output:
+ if b'ERROR' in output:
return False
return True
@@ -207,6 +207,7 @@ def pdf_info(original):
_log.debug('pdfinfo could not read the pdf file.')
raise BadMediaFail()
+ lines = [l.decode('utf-8', 'replace') for l in lines]
info_dict = dict([[part.strip() for part in l.strip().split(':', 1)]
for l in lines if ':' in l])
@@ -466,6 +467,6 @@ class Resizer(CommonPdfProcessor):
class PdfProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(PdfProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
diff --git a/mediagoblin/media_types/raw_image/__init__.py b/mediagoblin/media_types/raw_image/__init__.py
new file mode 100644
index 00000000..046a9b2a
--- /dev/null
+++ b/mediagoblin/media_types/raw_image/__init__.py
@@ -0,0 +1,37 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from mediagoblin.media_types.image import ImageMediaManager
+from mediagoblin.media_types.raw_image.processing import (
+ ACCEPTED_EXTENSIONS, MEDIA_TYPE,
+ RawImageProcessingManager, sniff_handler)
+
+
+class RawImageMediaManager(ImageMediaManager):
+ human_readable = "Raw image"
+
+
+def get_media_type_and_manager(ext):
+ if ext in ACCEPTED_EXTENSIONS:
+ return MEDIA_TYPE, RawImageMediaManager
+
+
+hooks = {
+ 'get_media_type_and_manager': get_media_type_and_manager,
+ 'sniff_handler': sniff_handler,
+ ('media_manager', MEDIA_TYPE): lambda: RawImageMediaManager,
+ ('reprocess_manager', MEDIA_TYPE): lambda: RawImageProcessingManager,
+}
diff --git a/mediagoblin/plugins/oauth/templates/oauth/authorize.html b/mediagoblin/media_types/raw_image/models.py
index 8a00c925..d3d68b93 100644
--- a/mediagoblin/plugins/oauth/templates/oauth/authorize.html
+++ b/mediagoblin/media_types/raw_image/models.py
@@ -1,12 +1,11 @@
-{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
-#, se, seee
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -14,18 +13,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#}
-{% extends "mediagoblin/base.html" %}
-{% import "mediagoblin/utils/wtforms.html" as wtforms_util %}
-{% block mediagoblin_content %}
-<form action="{{ request.urlgen('mediagoblin.plugins.oauth.authorize_client') }}"
- method="POST">
- <div class="form_box_xl">
- {{ csrf_token }}
- <h2>Authorize {{ client.name }}?</h2>
- <p class="client-description">{{ client.description }}</p>
- {{ wtforms_util.render_divs(form) }}
- </div>
-</form>
-{% endblock %}
+from mediagoblin.media_types.image.models import (
+ BACKREF_NAME, DATA_MODEL)
+
+
+MODELS = None
diff --git a/mediagoblin/media_types/raw_image/processing.py b/mediagoblin/media_types/raw_image/processing.py
new file mode 100644
index 00000000..740ba2dd
--- /dev/null
+++ b/mediagoblin/media_types/raw_image/processing.py
@@ -0,0 +1,82 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import os
+import logging
+
+# This needs to handle the case where it's missing
+import pyexiv2
+
+from mediagoblin.media_types.image.processing import (
+ InitialProcessor, Resizer)
+from mediagoblin.processing import (
+ FilenameBuilder, ProcessingManager)
+
+
+_log = logging.getLogger(__name__)
+
+MEDIA_TYPE = 'mediagoblin.media_types.raw_image'
+ACCEPTED_EXTENSIONS = ['nef', 'cr2']
+
+
+# The entire function have to be copied
+
+def sniff_handler(media_file, filename):
+ _log.info('Sniffing {0}'.format(MEDIA_TYPE))
+ name, ext = os.path.splitext(filename)
+ clean_ext = ext[1:].lower() # Strip the . from ext and make lowercase
+
+ if clean_ext in ACCEPTED_EXTENSIONS:
+ _log.info('Found file extension in supported filetypes')
+ return MEDIA_TYPE
+ else:
+ _log.debug('Media present, extension not found in {0}'.format(
+ ACCEPTED_EXTENSIONS))
+
+ return None
+
+
+class InitialRawProcessor(InitialProcessor):
+ def common_setup(self):
+ """
+ Pull out a full-size JPEG-preview
+ """
+ super(InitialRawProcessor, self).common_setup()
+
+ self._original_raw = self.process_filename
+
+ # Read EXIF data
+ md = pyexiv2.ImageMetadata(self._original_raw)
+ md.read()
+ self.process_filename = os.path.join(self.conversions_subdir,
+ self.entry.queued_media_file[-1])
+
+ # Extract the biggest preview and write it as our working image
+ md.previews[-1].write_to_file(
+ self.process_filename.encode('utf-8'))
+ self.process_filename += '.jpg'
+ _log.debug(u'Wrote new file from {0} to preview (jpg) {1}'.format(
+ self._original_raw, self.process_filename))
+
+ # Override the namebuilder with our new jpg-based name
+ self.name_builder = FilenameBuilder(self.process_filename)
+
+
+class RawImageProcessingManager(ProcessingManager):
+ def __init__(self):
+ super(RawImageProcessingManager, self).__init__()
+ self.add_processor(InitialRawProcessor)
+ self.add_processor(Resizer)
diff --git a/mediagoblin/media_types/stl/migrations/16134ed134ad_stl_media_type_initial_migration.py b/mediagoblin/media_types/stl/migrations/16134ed134ad_stl_media_type_initial_migration.py
new file mode 100644
index 00000000..38a8d7e7
--- /dev/null
+++ b/mediagoblin/media_types/stl/migrations/16134ed134ad_stl_media_type_initial_migration.py
@@ -0,0 +1,40 @@
+"""STL media type initial migration
+
+Revision ID: 16134ed134ad
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:00:43.084284
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '16134ed134ad'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('stl_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("stl__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'stl__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('center_x', sa.Float(), nullable=True),
+ sa.Column('center_y', sa.Float(), nullable=True),
+ sa.Column('center_z', sa.Float(), nullable=True),
+ sa.Column('width', sa.Float(), nullable=True),
+ sa.Column('height', sa.Float(), nullable=True),
+ sa.Column('depth', sa.Float(), nullable=True),
+ sa.Column('file_type', sa.String(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('stl__mediadata')
diff --git a/mediagoblin/media_types/stl/model_loader.py b/mediagoblin/media_types/stl/model_loader.py
index 88f19314..c1864613 100644
--- a/mediagoblin/media_types/stl/model_loader.py
+++ b/mediagoblin/media_types/stl/model_loader.py
@@ -22,7 +22,7 @@ class ThreeDeeParseError(Exception):
pass
-class ThreeDee():
+class ThreeDee(object):
"""
3D model parser base class. Derrived classes are used for basic
analysis of 3D models, and are not intended to be used for 3D
diff --git a/mediagoblin/media_types/stl/processing.py b/mediagoblin/media_types/stl/processing.py
index 65a86234..55764aeb 100644
--- a/mediagoblin/media_types/stl/processing.py
+++ b/mediagoblin/media_types/stl/processing.py
@@ -365,6 +365,6 @@ class Resizer(CommonStlProcessor):
class StlProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(StlProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
diff --git a/mediagoblin/media_types/tools.py b/mediagoblin/media_types/tools.py
index fe7b3772..602b9605 100644
--- a/mediagoblin/media_types/tools.py
+++ b/mediagoblin/media_types/tools.py
@@ -25,3 +25,22 @@ def media_type_warning():
_log.warning('Media_types have been converted to plugins. Old'
' media_types will no longer work. Please convert them'
' to plugins to continue using them.')
+
+
+def discover(src):
+ '''
+ Discover properties about a media file
+ '''
+ # GStreamer might be not installed, so it should not be initialized on
+ # import, or an exception will be raised.
+ import gi
+ gi.require_version('Gst', '1.0')
+ from gi.repository import GObject, Gst, GLib
+ Gst.init(None)
+ # init before import to work around https://bugzilla.gnome.org/show_bug.cgi?id=736260
+ from gi.repository import GstPbutils
+
+ _log.info('Discovering {0}...'.format(src))
+ uri = 'file://{0}'.format(src)
+ discoverer = GstPbutils.Discoverer.new(60 * Gst.SECOND)
+ return discoverer.discover_uri(uri)
diff --git a/mediagoblin/media_types/video/__init__.py b/mediagoblin/media_types/video/__init__.py
index c85cc0b2..1862ffe1 100644
--- a/mediagoblin/media_types/video/__init__.py
+++ b/mediagoblin/media_types/video/__init__.py
@@ -15,8 +15,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from mediagoblin.media_types import MediaManagerBase
-from mediagoblin.media_types.video.processing import VideoProcessingManager, \
- sniff_handler
+from mediagoblin.media_types.video.processing import (VideoProcessingManager,
+ sniff_handler, sniffer)
MEDIA_TYPE = 'mediagoblin.media_types.video'
@@ -28,6 +28,7 @@ class VideoMediaManager(MediaManagerBase):
human_readable = "Video"
display_template = "mediagoblin/media_displays/video.html"
default_thumb = "images/media_thumbs/video.jpg"
+ type_icon = "images/type_icons/video.png"
# Used by the media_entry.get_display_media method
media_fetch_order = [u'webm_video', u'original']
@@ -38,8 +39,12 @@ def get_media_type_and_manager(ext):
if ext in ACCEPTED_EXTENSIONS:
return MEDIA_TYPE, VideoMediaManager
+def type_match_handler(ext):
+ if ext in ACCEPTED_EXTENSIONS:
+ return MEDIA_TYPE, VideoMediaManager, sniffer
+
hooks = {
- 'get_media_type_and_manager': get_media_type_and_manager,
+ 'type_match_handler': type_match_handler,
'sniff_handler': sniff_handler,
('media_manager', MEDIA_TYPE): lambda: VideoMediaManager,
('reprocess_manager', MEDIA_TYPE): lambda: VideoProcessingManager,
diff --git a/mediagoblin/media_types/video/migrations.py b/mediagoblin/media_types/video/migrations.py
index d68e2933..2445cd4d 100644
--- a/mediagoblin/media_types/video/migrations.py
+++ b/mediagoblin/media_types/video/migrations.py
@@ -18,6 +18,8 @@ from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
from sqlalchemy import MetaData, Column, Unicode
+import json
+
MIGRATIONS = {}
@@ -47,3 +49,62 @@ def webm_640_to_webm_video(db):
values(name='webm_video'))
db.commit()
+
+
+@RegisterMigration(3, MIGRATIONS)
+def change_metadata_format(db):
+ """Change orig_metadata format for multi-stream a-v"""
+ db_metadata = MetaData(bind=db.bind)
+
+ vid_data = inspect_table(db_metadata, "video__mediadata")
+
+ for row in db.execute(vid_data.select()):
+ if not row.orig_metadata:
+ continue
+
+ metadata = json.loads(row.orig_metadata)
+
+ # before this migration there was info about only one video or audio
+ # stream. So, we store existing info as the first item in the list
+ new_metadata = {'audio': [], 'video': [], 'common': {}}
+ video_key_map = { # old: new
+ 'videoheight': 'height',
+ 'videowidth': 'width',
+ 'videorate': 'rate',
+ }
+ audio_key_map = { # old: new
+ 'audiochannels': 'channels',
+ }
+ common_key_map = {
+ 'videolength': 'length',
+ }
+
+ new_metadata['video'] = [dict((v, metadata.get(k))
+ for k, v in video_key_map.items() if metadata.get(k))]
+ new_metadata['audio'] = [dict((v, metadata.get(k))
+ for k, v in audio_key_map.items() if metadata.get(k))]
+ new_metadata['common'] = dict((v, metadata.get(k))
+ for k, v in common_key_map.items() if metadata.get(k))
+
+ # 'mimetype' should be in tags
+ new_metadata['common']['tags'] = {'mimetype': metadata.get('mimetype')}
+ if 'tags' in metadata:
+ new_metadata['video'][0]['tags'] = {}
+ new_metadata['audio'][0]['tags'] = {}
+
+ tags = metadata['tags']
+
+ video_keys = ['encoder', 'encoder-version', 'video-codec']
+ audio_keys = ['audio-codec']
+
+ for t, v in tags.items():
+ if t in video_keys:
+ new_metadata['video'][0]['tags'][t] = tags[t]
+ elif t in audio_keys:
+ new_metadata['audio'][0]['tags'][t] = tags[t]
+ else:
+ new_metadata['common']['tags'][t] = tags[t]
+ db.execute(vid_data.update()
+ .where(vid_data.c.media_entry==row.media_entry)
+ .values(orig_metadata=json.dumps(new_metadata)))
+ db.commit()
diff --git a/mediagoblin/media_types/video/migrations/38feb829c545_video_media_type_initial_migration.py b/mediagoblin/media_types/video/migrations/38feb829c545_video_media_type_initial_migration.py
new file mode 100644
index 00000000..89d54eb9
--- /dev/null
+++ b/mediagoblin/media_types/video/migrations/38feb829c545_video_media_type_initial_migration.py
@@ -0,0 +1,36 @@
+"""Video media type initial migration
+
+Revision ID: 38feb829c545
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 22:44:16.291834
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '38feb829c545'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('video_media_type',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table("video__mediadata"):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'video__mediadata',
+ sa.Column('media_entry', sa.Integer(), nullable=False),
+ sa.Column('width', sa.SmallInteger(), nullable=True),
+ sa.Column('height', sa.SmallInteger(), nullable=True),
+ sa.Column('orig_metadata', sa.UnicodeText(), nullable=True),
+ sa.ForeignKeyConstraint(['media_entry'], ['core__media_entries.id'], ),
+ sa.PrimaryKeyConstraint('media_entry'))
+
+
+def downgrade():
+ op.drop_table('video__mediadata')
diff --git a/mediagoblin/media_types/video/models.py b/mediagoblin/media_types/video/models.py
index be9d258f..da635ed7 100644
--- a/mediagoblin/media_types/video/models.py
+++ b/mediagoblin/media_types/video/models.py
@@ -30,7 +30,7 @@ BACKREF_NAME = "video__media_data"
class VideoData(Base):
"""
Attributes:
- - media_data: the originating media entry (of course)
+ - media_entry: the originating media entry (of course)
- width: width of the transcoded video
- height: height of the transcoded video
- orig_metadata: A loose json structure containing metadata gstreamer
@@ -68,19 +68,18 @@ class VideoData(Base):
"""
orig_metadata = self.orig_metadata or {}
- if "webm_video" not in self.get_media_entry.media_files \
- and "mimetype" in orig_metadata \
- and "tags" in orig_metadata \
- and "audio-codec" in orig_metadata["tags"] \
- and "video-codec" in orig_metadata["tags"]:
+ if ("webm_video" not in self.get_media_entry.media_files
+ and "mimetype" in orig_metadata.get('common', {}).get('tags', {})
+ and "codec" in orig_metadata['audio']
+ and "codec" in orig_metadata['video']):
if orig_metadata['mimetype'] == 'application/ogg':
# stupid ambiguous .ogg extension
mimetype = "video/ogg"
else:
- mimetype = orig_metadata['mimetype']
+ mimetype = orig_metadata['common']['tags']['mimetype']
- video_codec = orig_metadata["tags"]["video-codec"].lower()
- audio_codec = orig_metadata["tags"]["audio-codec"].lower()
+ video_codec = orig_metadata["video"]["codec"].lower()
+ audio_codec = orig_metadata["audio"]["codec"].lower()
# We don't want the "video" at the end of vp8...
# not sure of a nicer way to be cleaning this stuff
diff --git a/mediagoblin/media_types/video/processing.py b/mediagoblin/media_types/video/processing.py
index 454f4ac4..ca3087a2 100644
--- a/mediagoblin/media_types/video/processing.py
+++ b/mediagoblin/media_types/video/processing.py
@@ -19,6 +19,8 @@ import os.path
import logging
import datetime
+import six
+
from mediagoblin import mg_globals as mgg
from mediagoblin.processing import (
FilenameBuilder, BaseProcessingFail,
@@ -27,6 +29,7 @@ from mediagoblin.processing import (
get_process_filename, store_public,
copy_original)
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
+from mediagoblin.media_types import MissingComponents
from . import transcoders
from .util import skip_transcode
@@ -44,77 +47,117 @@ class VideoTranscodingFail(BaseProcessingFail):
general_message = _(u'Video transcoding failed')
-def sniff_handler(media_file, filename):
- transcoder = transcoders.VideoTranscoder()
- data = transcoder.discover(media_file.name)
-
+def sniffer(media_file):
+ '''New style sniffer, used in two-steps check; requires to have .name'''
_log.info('Sniffing {0}'.format(MEDIA_TYPE))
+ try:
+ data = transcoders.discover(media_file.name)
+ except Exception as e:
+ # this is usually GLib.GError, but we don't really care which one
+ _log.warning(u'GStreamer: {0}'.format(six.text_type(e)))
+ raise MissingComponents(u'GStreamer: {0}'.format(six.text_type(e)))
_log.debug('Discovered: {0}'.format(data))
- if not data:
+ if not data.get_video_streams():
+ raise MissingComponents('No video streams found in this video')
+
+ if data.get_result() != 0: # it's 0 if success
+ try:
+ missing = data.get_misc().get_string('name')
+ _log.warning('GStreamer: missing {0}'.format(missing))
+ except AttributeError as e:
+ # AttributeError happens here on gstreamer >1.4, when get_misc
+ # returns None. There is a special function to get info about
+ # missing plugin. This info should be printed to logs for admin and
+ # showed to the user in a short and nice version
+ details = data.get_missing_elements_installer_details()
+ _log.warning('GStreamer: missing: {0}'.format(', '.join(details)))
+ missing = u', '.join([u'{0} ({1})'.format(*d.split('|')[3:])
+ for d in details])
+ raise MissingComponents(u'{0} is missing'.format(missing))
+
+ return MEDIA_TYPE
+
+
+def sniff_handler(media_file, filename):
+ try:
+ return sniffer(media_file)
+ except:
_log.error('Could not discover {0}'.format(filename))
return None
- if data['is_video'] is True:
- return MEDIA_TYPE
-
- return None
+def get_tags(stream_info):
+ 'gets all tags and their values from stream info'
+ taglist = stream_info.get_tags()
+ if not taglist:
+ return {}
+ tags = []
+ taglist.foreach(
+ lambda list, tag: tags.append((tag, list.get_value_index(tag, 0))))
+ tags = dict(tags)
+
+ # date/datetime should be converted from GDate/GDateTime to strings
+ if 'date' in tags:
+ date = tags['date']
+ tags['date'] = "%s-%s-%s" % (
+ date.year, date.month, date.day)
+ if 'datetime' in tags:
+ # TODO: handle timezone info; gst.get_time_zone_offset +
+ # python's tzinfo should help
+ dt = tags['datetime']
+ tags['datetime'] = datetime.datetime(
+ dt.get_year(), dt.get_month(), dt.get_day(), dt.get_hour(),
+ dt.get_minute(), dt.get_second(),
+ dt.get_microsecond()).isoformat()
+ for k, v in tags.copy().items():
+ # types below are accepted by json; others must not present
+ if not isinstance(v, (dict, list, six.string_types, int, float, bool,
+ type(None))):
+ del tags[k]
+ return dict(tags)
def store_metadata(media_entry, metadata):
"""
Store metadata from this video for this media entry.
"""
- # Let's pull out the easy, not having to be converted ones first
- stored_metadata = dict(
- [(key, metadata[key])
- for key in [
- "videoheight", "videolength", "videowidth",
- "audiorate", "audiolength", "audiochannels", "audiowidth",
- "mimetype"]
- if key in metadata])
-
- # We have to convert videorate into a sequence because it's a
- # special type normally..
-
- if "videorate" in metadata:
- videorate = metadata["videorate"]
- stored_metadata["videorate"] = [videorate.num, videorate.denom]
-
- # Also make a whitelist conversion of the tags.
- if "tags" in metadata:
- tags_metadata = metadata['tags']
-
- # we don't use *all* of these, but we know these ones are
- # safe...
- tags = dict(
- [(key, tags_metadata[key])
- for key in [
- "application-name", "artist", "audio-codec", "bitrate",
- "container-format", "copyright", "encoder",
- "encoder-version", "license", "nominal-bitrate", "title",
- "video-codec"]
- if key in tags_metadata])
- if 'date' in tags_metadata:
- date = tags_metadata['date']
- tags['date'] = "%s-%s-%s" % (
- date.year, date.month, date.day)
-
- # TODO: handle timezone info; gst.get_time_zone_offset +
- # python's tzinfo should help
- if 'datetime' in tags_metadata:
- dt = tags_metadata['datetime']
- tags['datetime'] = datetime.datetime(
- dt.get_year(), dt.get_month(), dt.get_day(), dt.get_hour(),
- dt.get_minute(), dt.get_second(),
- dt.get_microsecond()).isoformat()
-
- stored_metadata['tags'] = tags
-
+ stored_metadata = dict()
+ audio_info_list = metadata.get_audio_streams()
+ if audio_info_list:
+ stored_metadata['audio'] = []
+ for audio_info in audio_info_list:
+ stored_metadata['audio'].append(
+ {
+ 'channels': audio_info.get_channels(),
+ 'bitrate': audio_info.get_bitrate(),
+ 'depth': audio_info.get_depth(),
+ 'languange': audio_info.get_language(),
+ 'sample_rate': audio_info.get_sample_rate(),
+ 'tags': get_tags(audio_info)
+ })
+
+ video_info_list = metadata.get_video_streams()
+ if video_info_list:
+ stored_metadata['video'] = []
+ for video_info in video_info_list:
+ stored_metadata['video'].append(
+ {
+ 'width': video_info.get_width(),
+ 'height': video_info.get_height(),
+ 'bitrate': video_info.get_bitrate(),
+ 'depth': video_info.get_depth(),
+ 'videorate': [video_info.get_framerate_num(),
+ video_info.get_framerate_denom()],
+ 'tags': get_tags(video_info)
+ })
+
+ stored_metadata['common'] = {
+ 'duration': metadata.get_duration(),
+ 'tags': get_tags(metadata),
+ }
# Only save this field if there's something to save
if len(stored_metadata):
- media_entry.media_data_init(
- orig_metadata=stored_metadata)
+ media_entry.media_data_init(orig_metadata=stored_metadata)
class CommonVideoProcessor(MediaProcessor):
@@ -204,15 +247,22 @@ class CommonVideoProcessor(MediaProcessor):
return
# Extract metadata and keep a record of it
- metadata = self.transcoder.discover(self.process_filename)
+ metadata = transcoders.discover(self.process_filename)
+
+ # metadata's stream info here is a DiscovererContainerInfo instance,
+ # it gets split into DiscovererAudioInfo and DiscovererVideoInfo;
+ # metadata itself has container-related data in tags, like video-codec
store_metadata(self.entry, metadata)
+ orig_dst_dimensions = (metadata.get_video_streams()[0].get_width(),
+ metadata.get_video_streams()[0].get_height())
+
# Figure out whether or not we need to transcode this video or
# if we can skip it
if skip_transcode(metadata, medium_size):
_log.debug('Skipping transcoding')
- dst_dimensions = metadata['videowidth'], metadata['videoheight']
+ dst_dimensions = orig_dst_dimensions
# If there is an original and transcoded, delete the transcoded
# since it must be of lower quality then the original
@@ -227,21 +277,23 @@ class CommonVideoProcessor(MediaProcessor):
vorbis_quality=vorbis_quality,
progress_callback=progress_callback,
dimensions=tuple(medium_size))
+ if self.transcoder.dst_data:
+ video_info = self.transcoder.dst_data.get_video_streams()[0]
+ dst_dimensions = (video_info.get_width(),
+ video_info.get_height())
+ self._keep_best()
- dst_dimensions = self.transcoder.dst_data.videowidth,\
- self.transcoder.dst_data.videoheight
-
- self._keep_best()
-
- # Push transcoded video to public storage
- _log.debug('Saving medium...')
- store_public(self.entry, 'webm_video', tmp_dst,
- self.name_builder.fill('{basename}.medium.webm'))
- _log.debug('Saved medium')
+ # Push transcoded video to public storage
+ _log.debug('Saving medium...')
+ store_public(self.entry, 'webm_video', tmp_dst,
+ self.name_builder.fill('{basename}.medium.webm'))
+ _log.debug('Saved medium')
- self.entry.set_file_metadata('webm_video', **file_metadata)
+ self.entry.set_file_metadata('webm_video', **file_metadata)
- self.did_transcode = True
+ self.did_transcode = True
+ else:
+ dst_dimensions = orig_dst_dimensions
# Save the width and height of the transcoded video
self.entry.media_data_init(
@@ -261,7 +313,7 @@ class CommonVideoProcessor(MediaProcessor):
return
# We will only use the width so that the correct scale is kept
- transcoders.VideoThumbnailerMarkII(
+ transcoders.capture_thumb(
self.process_filename,
tmp_thumb,
thumb_size[0])
@@ -447,7 +499,7 @@ class Transcoder(CommonVideoProcessor):
class VideoProcessingManager(ProcessingManager):
def __init__(self):
- super(self.__class__, self).__init__()
+ super(VideoProcessingManager, self).__init__()
self.add_processor(InitialProcessor)
self.add_processor(Resizer)
self.add_processor(Transcoder)
diff --git a/mediagoblin/media_types/video/transcoders.py b/mediagoblin/media_types/video/transcoders.py
index 9d6b7655..2d3392f2 100644
--- a/mediagoblin/media_types/video/transcoders.py
+++ b/mediagoblin/media_types/video/transcoders.py
@@ -14,21 +14,27 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from __future__ import division
+from __future__ import division, print_function
import os
import sys
import logging
-import urllib
import multiprocessing
-import gobject
+
+from mediagoblin.media_types.tools import discover
+from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
+
+#os.environ['GST_DEBUG'] = '4,python:4'
old_argv = sys.argv
sys.argv = []
-import pygst
-pygst.require('0.10')
-import gst
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import GLib, Gst
+Gst.init(None)
+# init before import to work around https://bugzilla.gnome.org/show_bug.cgi?id=736260
+from gi.repository import GstPbutils
sys.argv = old_argv
import struct
@@ -37,12 +43,8 @@ try:
except ImportError:
import Image
-from gst.extend import discoverer
-
_log = logging.getLogger(__name__)
-gobject.threads_init()
-
CPU_COUNT = 2
try:
@@ -53,338 +55,92 @@ except NotImplementedError:
os.putenv('GST_DEBUG_DUMP_DOT_DIR', '/tmp')
-def pixbuf_to_pilbuf(buf):
- data = list()
- for i in range(0, len(buf), 3):
- r, g, b = struct.unpack('BBB', buf[i:i + 3])
- data.append((r, g, b))
-
- return data
-
-
-class VideoThumbnailerMarkII(object):
- '''
- Creates a thumbnail from a video file. Rewrite of VideoThumbnailer.
-
- Large parts of the functionality and overall architectue contained within
- this object is taken from Participatory Culture Foundation's
- `gst_extractor.Extractor` object last seen at
- https://github.com/pculture/miro/blob/master/tv/lib/frontends/widgets/gst/gst_extractor.py
- in the `miro` codebase.
-
- The `miro` codebase and the gst_extractor.py are licensed under the GNU
- General Public License v2 or later.
- '''
- STATE_NULL = 0
- STATE_HALTING = 1
- STATE_PROCESSING = 2
- STATE_PROCESSING_THUMBNAIL = 3
-
- def __init__(self, source_path, dest_path, width=None, height=None,
- position_callback=None):
- self.state = self.STATE_NULL
-
- self.has_reached_playbin_pause = False
-
- self.thumbnail_pipeline = None
-
- self.permission_to_take_picture = False
-
- self.buffer_probes = {}
-
- self.errors = []
-
- self.source_path = os.path.abspath(source_path)
- self.dest_path = os.path.abspath(dest_path)
-
- self.width = width
- self.height = height
- self.position_callback = position_callback \
- or self.wadsworth_position_callback
-
- self.mainloop = gobject.MainLoop()
-
- self.playbin = gst.element_factory_make('playbin')
-
- self.videosink = gst.element_factory_make('fakesink', 'videosink')
- self.audiosink = gst.element_factory_make('fakesink', 'audiosink')
-
- self.playbin.set_property('video-sink', self.videosink)
- self.playbin.set_property('audio-sink', self.audiosink)
-
- self.playbin_message_bus = self.playbin.get_bus()
-
- self.playbin_message_bus.add_signal_watch()
- self.playbin_bus_watch_id = self.playbin_message_bus.connect(
- 'message',
- self.on_playbin_message)
-
- self.playbin.set_property(
- 'uri',
- 'file:{0}'.format(
- urllib.pathname2url(self.source_path)))
-
- self.playbin.set_state(gst.STATE_PAUSED)
-
- try:
- self.run()
- except Exception as exc:
- _log.critical(
- 'Exception "{0}" caught, shutting down mainloop and re-raising'\
- .format(exc))
- self.disconnect()
- raise
-
- def wadsworth_position_callback(self, duration, gst):
- return self.duration / 100 * 30
-
- def run(self):
- self.mainloop.run()
-
- def on_playbin_message(self, message_bus, message):
- # Silenced to prevent clobbering of output
- #_log.debug('playbin message: {0}'.format(message))
-
- if message.type == gst.MESSAGE_ERROR:
- _log.error('playbin error: {0}'.format(message))
- gobject.idle_add(self.on_playbin_error)
-
- if message.type == gst.MESSAGE_STATE_CHANGED:
- prev_state, cur_state, pending_state = \
- message.parse_state_changed()
-
- _log.debug('playbin state changed: \nprev: {0}\ncur: {1}\n \
-pending: {2}'.format(
- prev_state,
- cur_state,
- pending_state))
-
- if cur_state == gst.STATE_PAUSED:
- if message.src == self.playbin:
- _log.info('playbin ready')
- gobject.idle_add(self.on_playbin_paused)
-
- def on_playbin_paused(self):
- if self.has_reached_playbin_pause:
- _log.warn('Has already reached on_playbin_paused. Aborting \
-without doing anything this time.')
- return False
-
- self.has_reached_playbin_pause = True
-
- # XXX: Why is this even needed at this point?
- current_video = self.playbin.get_property('current-video')
-
- if not current_video:
- _log.critical('Could not get any video data \
-from playbin')
- else:
- _log.info('Got video data from playbin')
-
- self.duration = self.get_duration(self.playbin)
- self.permission_to_take_picture = True
- self.buffer_probes = {}
-
- pipeline = ''.join([
- 'filesrc location="%s" ! decodebin ! ' % self.source_path,
- 'ffmpegcolorspace ! videoscale ! ',
- 'video/x-raw-rgb,depth=24,bpp=24,pixel-aspect-ratio=1/1',
- ',width={0}'.format(self.width) if self.width else '',
- ',height={0}'.format(self.height) if self.height else '',
- ' ! ',
- 'fakesink signal-handoffs=True'])
-
- _log.debug('thumbnail_pipeline: {0}'.format(pipeline))
-
- self.thumbnail_pipeline = gst.parse_launch(pipeline)
- self.thumbnail_message_bus = self.thumbnail_pipeline.get_bus()
- self.thumbnail_message_bus.add_signal_watch()
- self.thumbnail_bus_watch_id = self.thumbnail_message_bus.connect(
- 'message',
- self.on_thumbnail_message)
-
- self.thumbnail_pipeline.set_state(gst.STATE_PAUSED)
-
- gobject.timeout_add(3000, self.on_gobject_timeout)
-
- return False
-
- def on_thumbnail_message(self, message_bus, message):
- # This is silenced to prevent clobbering of the terminal window
- #_log.debug('thumbnail message: {0}'.format(message))
-
- if message.type == gst.MESSAGE_ERROR:
- _log.error('thumbnail error: {0}'.format(message.parse_error()))
- gobject.idle_add(self.on_thumbnail_error, message)
-
- if message.type == gst.MESSAGE_STATE_CHANGED:
- prev_state, cur_state, pending_state = \
- message.parse_state_changed()
-
- _log.debug('thumbnail state changed: \nprev: {0}\ncur: {1}\n \
-pending: {2}'.format(
- prev_state,
- cur_state,
- pending_state))
-
- if cur_state == gst.STATE_PAUSED and \
- not self.state == self.STATE_PROCESSING_THUMBNAIL:
- # Find the fakesink sink pad and attach the on_buffer_probe
- # handler to it.
- seek_amount = self.position_callback(self.duration, gst)
-
- seek_result = self.thumbnail_pipeline.seek(
- 1.0,
- gst.FORMAT_TIME,
- gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
- gst.SEEK_TYPE_SET,
- seek_amount,
- gst.SEEK_TYPE_NONE,
- 0)
-
- if not seek_result:
- _log.info('Could not seek.')
- else:
- _log.info('Seek successful, attaching buffer probe')
- self.state = self.STATE_PROCESSING_THUMBNAIL
- for sink in self.thumbnail_pipeline.sinks():
- sink_name = sink.get_name()
- sink_factory_name = sink.get_factory().get_name()
-
- if sink_factory_name == 'fakesink':
- sink_pad = sink.get_pad('sink')
-
- self.buffer_probes[sink_name] = sink_pad\
- .add_buffer_probe(
- self.on_pad_buffer_probe,
- sink_name)
-
- _log.info('Attached buffer probes: {0}'.format(
- self.buffer_probes))
-
- break
-
-
- elif self.state == self.STATE_PROCESSING_THUMBNAIL:
- _log.info('Already processing thumbnail')
-
- def on_pad_buffer_probe(self, *args):
- _log.debug('buffer probe handler: {0}'.format(args))
- gobject.idle_add(lambda: self.take_snapshot(*args))
-
- def take_snapshot(self, pad, buff, name):
- if self.state == self.STATE_HALTING:
- _log.debug('Pipeline is halting, will not take snapshot')
- return False
-
- _log.info('Taking snapshot! ({0})'.format(
- (pad, buff, name)))
- try:
- caps = buff.caps
- if caps is None:
- _log.error('No buffer caps present /take_snapshot')
- self.disconnect()
-
- _log.debug('caps: {0}'.format(caps))
-
- filters = caps[0]
- width = filters['width']
- height = filters['height']
-
- im = Image.new('RGB', (width, height))
-
- data = pixbuf_to_pilbuf(buff.data)
-
- im.putdata(data)
-
- im.save(self.dest_path)
-
- _log.info('Saved snapshot!')
-
- self.disconnect()
-
- except gst.QueryError as exc:
- _log.error('take_snapshot - QueryError: {0}'.format(exc))
-
- return False
-
- def on_thumbnail_error(self, message):
- scaling_failed = False
-
- if 'Error calculating the output scaled size - integer overflow' \
- in message.parse_error()[1]:
- # GStreamer videoscale sometimes fails to calculate the dimensions
- # given only one of the destination dimensions and the source
- # dimensions. This is a workaround in case videoscale returns an
- # error that indicates this has happened.
- scaling_failed = True
- _log.error('Thumbnailing failed because of videoscale integer'
- ' overflow. Will retry with fallback.')
- else:
- _log.error('Thumbnailing failed: {0}'.format(message.parse_error()))
-
- # Kill the current mainloop
- self.disconnect()
-
- if scaling_failed:
- # Manually scale the destination dimensions
- _log.info('Retrying with manually set sizes...')
-
- info = VideoTranscoder().discover(self.source_path)
-
- h = info['videoheight']
- w = info['videowidth']
- ratio = 180 / int(w)
- h = int(h * ratio)
-
- self.__init__(self.source_path, self.dest_path, 180, h)
-
- def disconnect(self):
- self.state = self.STATE_HALTING
-
- if self.playbin is not None:
- self.playbin.set_state(gst.STATE_NULL)
-
- for sink in self.playbin.sinks():
- sink_name = sink.get_name()
- sink_factory_name = sink.get_factory().get_name()
-
- if sink_factory_name == 'fakesink':
- sink_pad = sink.get_pad('sink')
- sink_pad.remove_buffer_probe(self.buffer_probes[sink_name])
- del self.buffer_probes[sink_name]
-
- self.playbin = None
-
- if self.thumbnail_pipeline is not None:
- self.thumbnail_pipeline.set_state(gst.STATE_NULL)
- self.thumbnail_pipeline = None
-
- if self.playbin_message_bus is not None:
- self.playbin_message_bus.disconnect(self.playbin_bus_watch_id)
- self.playbin_message_bus = None
-
- self.halt()
-
- def halt(self):
- gobject.idle_add(self.mainloop.quit)
-
- def on_gobject_timeout(self):
- _log.critical('Reached gobject timeout')
- self.disconnect()
-
- def get_duration(self, pipeline, attempt=1):
- if attempt == 5:
- _log.critical('Pipeline duration query retry limit reached.')
- return 0
-
- try:
- return pipeline.query_duration(gst.FORMAT_TIME)[0]
- except gst.QueryError as exc:
- _log.error('Could not get duration on attempt {0}: {1}'.format(
- attempt,
- exc))
- return self.get_duration(pipeline, attempt + 1)
+def capture_thumb(video_path, dest_path, width=None, height=None, percent=0.5):
+ def pad_added(element, pad, connect_to):
+ '''This is a callback to dynamically add element to pipeline'''
+ caps = pad.query_caps(None)
+ name = caps.to_string()
+ _log.debug('on_pad_added: {0}'.format(name))
+ if name.startswith('video') and not connect_to.is_linked():
+ pad.link(connect_to)
+
+ # construct pipeline: uridecodebin ! videoconvert ! videoscale ! \
+ # ! CAPS ! appsink
+ pipeline = Gst.Pipeline()
+ uridecodebin = Gst.ElementFactory.make('uridecodebin', None)
+ uridecodebin.set_property('uri', 'file://{0}'.format(video_path))
+ videoconvert = Gst.ElementFactory.make('videoconvert', None)
+ uridecodebin.connect('pad-added', pad_added,
+ videoconvert.get_static_pad('sink'))
+ videoscale = Gst.ElementFactory.make('videoscale', None)
+
+ # create caps for video scaling
+ caps_struct = Gst.Structure.new_empty('video/x-raw')
+ caps_struct.set_value('pixel-aspect-ratio', Gst.Fraction(1, 1))
+ caps_struct.set_value('format', 'RGB')
+ if height:
+ caps_struct.set_value('height', height)
+ if width:
+ caps_struct.set_value('width', width)
+ caps = Gst.Caps.new_empty()
+ caps.append_structure(caps_struct)
+
+ # sink everything to memory
+ appsink = Gst.ElementFactory.make('appsink', None)
+ appsink.set_property('caps', caps)
+
+ # add everything to pipeline
+ elements = [uridecodebin, videoconvert, videoscale, appsink]
+ for e in elements:
+ pipeline.add(e)
+ videoconvert.link(videoscale)
+ videoscale.link(appsink)
+
+ # pipeline constructed, starting playing, but first some preparations
+ # seek to 50% of the file is required
+ pipeline.set_state(Gst.State.PAUSED)
+ # timeout of 3 seconds below was set experimentally
+ state = pipeline.get_state(Gst.SECOND * 3)
+ if state[0] != Gst.StateChangeReturn.SUCCESS:
+ _log.warning('state change failed, {0}'.format(state))
+ return
+
+ # get duration
+ (success, duration) = pipeline.query_duration(Gst.Format.TIME)
+ if not success:
+ _log.warning('query_duration failed')
+ return
+
+ seek_to = int(duration * int(percent * 100) / 100)
+ _log.debug('Seeking to {0} of {1}'.format(
+ float(seek_to) / Gst.SECOND, float(duration) / Gst.SECOND))
+ seek = pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, seek_to)
+ if not seek:
+ _log.warning('seek failed')
+ return
+
+ # get sample, retrieve it's format and save
+ sample = appsink.emit("pull-preroll")
+ if not sample:
+ _log.warning('could not get sample')
+ return
+ caps = sample.get_caps()
+ if not caps:
+ _log.warning('could not get snapshot format')
+ return
+ structure = caps.get_structure(0)
+ (success, width) = structure.get_int('width')
+ (success, height) = structure.get_int('height')
+ buffer = sample.get_buffer()
+
+ # get the image from the buffer and save it to disk
+ im = Image.frombytes('RGB', (width, height),
+ buffer.extract_dup(0, buffer.get_size()))
+ im.save(dest_path)
+ _log.info('thumbnail saved to {0}'.format(dest_path))
+
+ # cleanup
+ pipeline.set_state(Gst.State.NULL)
class VideoTranscoder(object):
@@ -393,16 +149,12 @@ class VideoTranscoder(object):
Transcodes the SRC video file to a VP8 WebM video file at DST
- - Does the same thing as VideoThumbnailer, but produces a WebM vp8
- and vorbis video file.
- - The VideoTranscoder exceeds the VideoThumbnailer in the way
- that it was refined afterwards and therefore is done more
- correctly.
+ - Produces a WebM vp8 and vorbis video file.
'''
def __init__(self):
_log.info('Initializing VideoTranscoder...')
self.progress_percentage = None
- self.loop = gobject.MainLoop()
+ self.loop = GLib.MainLoop()
def transcode(self, src, dst, **kwargs):
'''
@@ -435,153 +187,84 @@ class VideoTranscoder(object):
if not type(self.destination_dimensions) == tuple:
raise Exception('dimensions must be tuple: (width, height)')
- self._setup()
- self._run()
-
- # XXX: This could be a static method.
- def discover(self, src):
- '''
- Discover properties about a media file
- '''
- _log.info('Discovering {0}'.format(src))
-
- self.source_path = src
- self._setup_discover(discovered_callback=self.__on_discovered)
-
- self.discoverer.discover()
-
- self.loop.run()
-
- if hasattr(self, '_discovered_data'):
- return self._discovered_data.__dict__
- else:
- return None
-
- def __on_discovered(self, data, is_media):
- _log.debug('Discovered: {0}'.format(data))
- if not is_media:
- self.__stop()
- raise Exception('Could not discover {0}'.format(self.source_path))
-
- self._discovered_data = data
-
- self.__stop_mainloop()
-
- def _setup(self):
- self._setup_discover()
self._setup_pipeline()
-
- def _run(self):
- _log.info('Discovering...')
- self.discoverer.discover()
- _log.info('Done')
-
- _log.debug('Initializing MainLoop()')
- self.loop.run()
-
- def _setup_discover(self, **kw):
- _log.debug('Setting up discoverer')
- self.discoverer = discoverer.Discoverer(self.source_path)
-
- # Connect self.__discovered to the 'discovered' event
- self.discoverer.connect(
- 'discovered',
- kw.get('discovered_callback', self.__discovered))
-
- def __discovered(self, data, is_media):
- '''
- Callback for media discoverer.
- '''
- if not is_media:
- self.__stop()
- raise Exception('Could not discover {0}'.format(self.source_path))
-
- _log.debug('__discovered, data: {0}'.format(data.__dict__))
-
- self.data = data
-
- # Launch things that should be done after discovery
+ self.data = discover(self.source_path)
self._link_elements()
self.__setup_videoscale_capsfilter()
-
- # Tell the transcoding pipeline to start running
- self.pipeline.set_state(gst.STATE_PLAYING)
+ self.pipeline.set_state(Gst.State.PLAYING)
_log.info('Transcoding...')
+ _log.debug('Initializing MainLoop()')
+ self.loop.run()
+
def _setup_pipeline(self):
_log.debug('Setting up transcoding pipeline')
# Create the pipeline bin.
- self.pipeline = gst.Pipeline('VideoTranscoderPipeline')
+ self.pipeline = Gst.Pipeline.new('VideoTranscoderPipeline')
# Create all GStreamer elements, starting with
# filesrc & decoder
- self.filesrc = gst.element_factory_make('filesrc', 'filesrc')
+ self.filesrc = Gst.ElementFactory.make('filesrc', 'filesrc')
self.filesrc.set_property('location', self.source_path)
self.pipeline.add(self.filesrc)
- self.decoder = gst.element_factory_make('decodebin2', 'decoder')
- self.decoder.connect('new-decoded-pad', self._on_dynamic_pad)
+ self.decoder = Gst.ElementFactory.make('decodebin', 'decoder')
+ self.decoder.connect('pad-added', self._on_dynamic_pad)
self.pipeline.add(self.decoder)
# Video elements
- self.videoqueue = gst.element_factory_make('queue', 'videoqueue')
+ self.videoqueue = Gst.ElementFactory.make('queue', 'videoqueue')
self.pipeline.add(self.videoqueue)
- self.videorate = gst.element_factory_make('videorate', 'videorate')
+ self.videorate = Gst.ElementFactory.make('videorate', 'videorate')
self.pipeline.add(self.videorate)
- self.ffmpegcolorspace = gst.element_factory_make(
- 'ffmpegcolorspace', 'ffmpegcolorspace')
- self.pipeline.add(self.ffmpegcolorspace)
+ self.videoconvert = Gst.ElementFactory.make('videoconvert',
+ 'videoconvert')
+ self.pipeline.add(self.videoconvert)
- self.videoscale = gst.element_factory_make('ffvideoscale', 'videoscale')
- #self.videoscale.set_property('method', 2) # I'm not sure this works
- #self.videoscale.set_property('add-borders', 0)
+ self.videoscale = Gst.ElementFactory.make('videoscale', 'videoscale')
self.pipeline.add(self.videoscale)
- self.capsfilter = gst.element_factory_make('capsfilter', 'capsfilter')
+ self.capsfilter = Gst.ElementFactory.make('capsfilter', 'capsfilter')
self.pipeline.add(self.capsfilter)
- self.vp8enc = gst.element_factory_make('vp8enc', 'vp8enc')
- self.vp8enc.set_property('quality', self.vp8_quality)
+ self.vp8enc = Gst.ElementFactory.make('vp8enc', 'vp8enc')
self.vp8enc.set_property('threads', self.vp8_threads)
- self.vp8enc.set_property('max-latency', 25)
self.pipeline.add(self.vp8enc)
# Audio elements
- self.audioqueue = gst.element_factory_make('queue', 'audioqueue')
+ self.audioqueue = Gst.ElementFactory.make('queue', 'audioqueue')
self.pipeline.add(self.audioqueue)
- self.audiorate = gst.element_factory_make('audiorate', 'audiorate')
+ self.audiorate = Gst.ElementFactory.make('audiorate', 'audiorate')
self.audiorate.set_property('tolerance', 80000000)
self.pipeline.add(self.audiorate)
- self.audioconvert = gst.element_factory_make('audioconvert', 'audioconvert')
+ self.audioconvert = Gst.ElementFactory.make('audioconvert', 'audioconvert')
self.pipeline.add(self.audioconvert)
-
- self.audiocapsfilter = gst.element_factory_make('capsfilter',
- 'audiocapsfilter')
- audiocaps = ['audio/x-raw-float']
- self.audiocapsfilter.set_property(
- 'caps',
- gst.caps_from_string(
- ','.join(audiocaps)))
+ self.audiocapsfilter = Gst.ElementFactory.make('capsfilter',
+ 'audiocapsfilter')
+ audiocaps = Gst.Caps.new_empty()
+ audiocaps_struct = Gst.Structure.new_empty('audio/x-raw')
+ audiocaps.append_structure(audiocaps_struct)
+ self.audiocapsfilter.set_property('caps', audiocaps)
self.pipeline.add(self.audiocapsfilter)
- self.vorbisenc = gst.element_factory_make('vorbisenc', 'vorbisenc')
+ self.vorbisenc = Gst.ElementFactory.make('vorbisenc', 'vorbisenc')
self.vorbisenc.set_property('quality', self.vorbis_quality)
self.pipeline.add(self.vorbisenc)
# WebMmux & filesink
- self.webmmux = gst.element_factory_make('webmmux', 'webmmux')
+ self.webmmux = Gst.ElementFactory.make('webmmux', 'webmmux')
self.pipeline.add(self.webmmux)
- self.filesink = gst.element_factory_make('filesink', 'filesink')
+ self.filesink = Gst.ElementFactory.make('filesink', 'filesink')
self.filesink.set_property('location', self.destination_path)
self.pipeline.add(self.filesink)
# Progressreport
- self.progressreport = gst.element_factory_make(
+ self.progressreport = Gst.ElementFactory.make(
'progressreport', 'progressreport')
# Update every second
self.progressreport.set_property('update-freq', 1)
@@ -600,48 +283,41 @@ class VideoTranscoder(object):
# 'new-decoded-pad' which links decoded src pads to either a video
# or audio sink
self.filesrc.link(self.decoder)
-
- # Link all the video elements in a row to webmmux
- gst.element_link_many(
- self.videoqueue,
- self.videorate,
- self.ffmpegcolorspace,
- self.videoscale,
- self.capsfilter,
- self.vp8enc,
- self.webmmux)
-
- if self.data.is_audio:
- # Link all the audio elements in a row to webmux
- gst.element_link_many(
- self.audioqueue,
- self.audiorate,
- self.audioconvert,
- self.audiocapsfilter,
- self.vorbisenc,
- self.webmmux)
-
- gst.element_link_many(
- self.webmmux,
- self.progressreport,
- self.filesink)
+ # link the rest
+ self.videoqueue.link(self.videorate)
+ self.videorate.link(self.videoconvert)
+ self.videoconvert.link(self.videoscale)
+ self.videoscale.link(self.capsfilter)
+ self.capsfilter.link(self.vp8enc)
+ self.vp8enc.link(self.webmmux)
+
+ if self.data.get_audio_streams():
+ self.audioqueue.link(self.audiorate)
+ self.audiorate.link(self.audioconvert)
+ self.audioconvert.link(self.audiocapsfilter)
+ self.audiocapsfilter.link(self.vorbisenc)
+ self.vorbisenc.link(self.webmmux)
+ self.webmmux.link(self.progressreport)
+ self.progressreport.link(self.filesink)
# Setup the message bus and connect _on_message to the pipeline
self._setup_bus()
- def _on_dynamic_pad(self, dbin, pad, islast):
+ def _on_dynamic_pad(self, dbin, pad):
'''
- Callback called when ``decodebin2`` has a pad that we can connect to
+ Callback called when ``decodebin`` has a pad that we can connect to
'''
# Intersect the capabilities of the video sink and the pad src
# Then check if they have no common capabilities.
- if self.ffmpegcolorspace.get_pad_template('sink')\
- .get_caps().intersect(pad.get_caps()).is_empty():
+ if (self.videorate.get_static_pad('sink').get_pad_template()
+ .get_caps().intersect(pad.query_caps()).is_empty()):
# It is NOT a video src pad.
- pad.link(self.audioqueue.get_pad('sink'))
+ _log.debug('linking audio to the pad dynamically')
+ pad.link(self.audioqueue.get_static_pad('sink'))
else:
# It IS a video src pad.
- pad.link(self.videoqueue.get_pad('sink'))
+ _log.debug('linking video to the pad dynamically')
+ pad.link(self.videoqueue.get_static_pad('sink'))
def _setup_bus(self):
self.bus = self.pipeline.get_bus()
@@ -652,73 +328,54 @@ class VideoTranscoder(object):
'''
Sets up the output format (width, height) for the video
'''
- caps = ['video/x-raw-yuv', 'pixel-aspect-ratio=1/1', 'framerate=30/1']
-
- if self.data.videoheight > self.data.videowidth:
- # Whoa! We have ourselves a portrait video!
- caps.append('height={0}'.format(
- self.destination_dimensions[1]))
+ caps_struct = Gst.Structure.new_empty('video/x-raw')
+ caps_struct.set_value('pixel-aspect-ratio', Gst.Fraction(1, 1))
+ caps_struct.set_value('framerate', Gst.Fraction(30, 1))
+ video_info = self.data.get_video_streams()[0]
+ if video_info.get_height() > video_info.get_width():
+ # portrait
+ caps_struct.set_value('height', self.destination_dimensions[1])
else:
- # It's a landscape, phew, how normal.
- caps.append('width={0}'.format(
- self.destination_dimensions[0]))
-
- self.capsfilter.set_property(
- 'caps',
- gst.caps_from_string(
- ','.join(caps)))
+ # landscape
+ caps_struct.set_value('width', self.destination_dimensions[0])
+ caps = Gst.Caps.new_empty()
+ caps.append_structure(caps_struct)
+ self.capsfilter.set_property('caps', caps)
def _on_message(self, bus, message):
_log.debug((bus, message, message.type))
-
- t = message.type
-
- if message.type == gst.MESSAGE_EOS:
- self._discover_dst_and_stop()
+ if message.type == Gst.MessageType.EOS:
+ self.dst_data = discover(self.destination_path)
+ self.__stop()
_log.info('Done')
-
- elif message.type == gst.MESSAGE_ELEMENT:
- if message.structure.get_name() == 'progress':
- data = dict(message.structure)
+ elif message.type == Gst.MessageType.ELEMENT:
+ if message.has_name('progress'):
+ structure = message.get_structure()
# Update progress state if it has changed
- if self.progress_percentage != data.get('percent'):
- self.progress_percentage = data.get('percent')
+ (success, percent) = structure.get_int('percent')
+ if self.progress_percentage != percent and success:
+ self.progress_percentage = percent
if self._progress_callback:
- self._progress_callback(data.get('percent'))
-
- _log.info('{percent}% done...'.format(
- percent=data.get('percent')))
- _log.debug(data)
-
- elif t == gst.MESSAGE_ERROR:
- _log.error((bus, message))
+ self._progress_callback(percent)
+ _log.info('{percent}% done...'.format(percent=percent))
+ elif message.type == Gst.MessageType.ERROR:
+ _log.error('Got error: {0}'.format(message.parse_error()))
+ self.dst_data = None
self.__stop()
- def _discover_dst_and_stop(self):
- self.dst_discoverer = discoverer.Discoverer(self.destination_path)
-
- self.dst_discoverer.connect('discovered', self.__dst_discovered)
-
- self.dst_discoverer.discover()
-
- def __dst_discovered(self, data, is_media):
- self.dst_data = data
-
- self.__stop()
-
def __stop(self):
_log.debug(self.loop)
if hasattr(self, 'pipeline'):
# Stop executing the pipeline
- self.pipeline.set_state(gst.STATE_NULL)
+ self.pipeline.set_state(Gst.State.NULL)
# This kills the loop, mercifully
- gobject.idle_add(self.__stop_mainloop)
+ GLib.idle_add(self.__stop_mainloop)
def __stop_mainloop(self):
'''
- Wrapper for gobject.MainLoop.quit()
+ Wrapper for GLib.MainLoop.quit()
This wrapper makes us able to see if self.loop.quit has been called
'''
@@ -729,7 +386,6 @@ class VideoTranscoder(object):
if __name__ == '__main__':
os.nice(19)
- logging.basicConfig()
from optparse import OptionParser
parser = OptionParser(
@@ -779,4 +435,4 @@ if __name__ == '__main__':
print('I\'m a callback!')
transcoder.transcode(*args, progress_callback=cb)
elif options.action == 'discover':
- print transcoder.discover(*args)
+ print(transcoder.discover(*args))
diff --git a/mediagoblin/media_types/video/util.py b/mediagoblin/media_types/video/util.py
index 29b7f410..8b65d839 100644
--- a/mediagoblin/media_types/video/util.py
+++ b/mediagoblin/media_types/video/util.py
@@ -30,30 +30,48 @@ def skip_transcode(metadata, size):
config = mgg.global_config['plugins']['mediagoblin.media_types.video']\
['skip_transcode']
+ # XXX: how were we supposed to use it?
medium_config = mgg.global_config['media:medium']
_log.debug('skip_transcode config: {0}'.format(config))
- if config['mime_types'] and metadata.get('mimetype'):
- if not metadata['mimetype'] in config['mime_types']:
- return False
+ metadata_tags = metadata.get_tags()
+ if not metadata_tags:
+ return False
- if config['container_formats'] and metadata['tags'].get('container-format'):
- if not metadata['tags']['container-format'] in config['container_formats']:
+ if config['mime_types'] and metadata_tags.get_string('mimetype')[0]:
+ if not metadata_tags.get_string('mimetype')[1] in config['mime_types']:
return False
- if config['video_codecs'] and metadata['tags'].get('video-codec'):
- if not metadata['tags']['video-codec'] in config['video_codecs']:
+ if (config['container_formats'] and
+ metadata_tags.get_string('container-format')[0]):
+ if not (metadata_tags.get_string('container-format')[1] in
+ config['container_formats']):
return False
- if config['audio_codecs'] and metadata['tags'].get('audio-codec'):
- if not metadata['tags']['audio-codec'] in config['audio_codecs']:
- return False
+ if config['video_codecs']:
+ for video_info in metadata.get_video_streams():
+ video_tags = video_info.get_tags()
+ if not video_tags:
+ return False
+ if not (video_tags.get_string('video-codec')[1] in
+ config['video_codecs']):
+ return False
+
+ if config['audio_codecs']:
+ for audio_info in metadata.get_audio_streams():
+ audio_tags = audio_info.get_tags()
+ if not audio_tags:
+ return False
+ if not (audio_tags.get_string('audio-codec')[1] in
+ config['audio_codecs']):
+ return False
if config['dimensions_match']:
- if not metadata['videoheight'] <= size[1]:
- return False
- if not metadata['videowidth'] <= size[0]:
- return False
+ for video_info in metadata.get_video_streams():
+ if not video_info.get_height() <= size[1]:
+ return False
+ if not video_info.get_width() <= size[0]:
+ return False
return True
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py
index 26ed66fa..7da31680 100644
--- a/mediagoblin/mg_globals.py
+++ b/mediagoblin/mg_globals.py
@@ -21,6 +21,7 @@ import gettext
import pkg_resources
import threading
+import six
#############################
# General mediagoblin globals
@@ -64,7 +65,7 @@ def setup_globals(**kwargs):
"""
from mediagoblin import mg_globals
- for key, value in kwargs.iteritems():
+ for key, value in six.iteritems(kwargs):
if not hasattr(mg_globals, key):
raise AssertionError("Global %s not known" % key)
setattr(mg_globals, key, value)
diff --git a/mediagoblin/moderation/forms.py b/mediagoblin/moderation/forms.py
index 72305b29..e46cfd36 100644
--- a/mediagoblin/moderation/forms.py
+++ b/mediagoblin/moderation/forms.py
@@ -119,10 +119,13 @@ class ReportResolutionForm(wtforms.Form):
format='%Y-%m-%d',
validators=[wtforms.validators.optional()])
why_user_was_banned = wtforms.TextAreaField(
+ _(u'Why user was banned:'),
validators=[wtforms.validators.optional()])
message_to_user = wtforms.TextAreaField(
+ _(u'Message to user:'),
validators=[wtforms.validators.optional()])
- resolution_content = wtforms.TextAreaField()
+ resolution_content = wtforms.TextAreaField(
+ _(u'Resolution content:'))
# ======== Forms for mediagoblin.moderation.report_panel page ============== #
diff --git a/mediagoblin/moderation/tools.py b/mediagoblin/moderation/tools.py
index e0337536..36d89d71 100644
--- a/mediagoblin/moderation/tools.py
+++ b/mediagoblin/moderation/tools.py
@@ -14,16 +14,19 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, Privilege, UserBan
+from mediagoblin.db.models import User, Privilege, UserBan, LocalUser
from mediagoblin.db.base import Session
from mediagoblin.tools.mail import send_email
from mediagoblin.tools.response import redirect
from datetime import datetime
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
+
def take_punitive_actions(request, form, report, user):
- message_body =''
+ message_body = ''
# The bulk of this action is running through all of the different
# punitive actions that a moderator could take.
@@ -31,7 +34,7 @@ def take_punitive_actions(request, form, report, user):
for privilege_name in form.take_away_privileges.data:
take_away_privileges(user.username, privilege_name)
form.resolution_content.data += \
- u"\n{mod} took away {user}\'s {privilege} privileges.".format(
+ _(u"\n{mod} took away {user}\'s {privilege} privileges.").format(
mod=request.user.username,
user=user.username,
privilege=privilege_name)
@@ -44,13 +47,13 @@ def take_punitive_actions(request, form, report, user):
reason=form.why_user_was_banned.data)
Session.add(user_ban)
form.resolution_content.data += \
- u"\n{mod} banned user {user} {expiration_date}.".format(
+ _(u"\n{mod} banned user {user} {expiration_date}.").format(
mod=request.user.username,
user=user.username,
expiration_date = (
- "until {date}".format(date=form.user_banned_until.data)
+ _("until {date}").format(date=form.user_banned_until.data)
if form.user_banned_until.data
- else "indefinitely"
+ else _("indefinitely")
)
)
@@ -59,23 +62,23 @@ def take_punitive_actions(request, form, report, user):
if u'sendmessage' in form.action_to_resolve.data:
message_body = form.message_to_user.data
form.resolution_content.data += \
- u"\n{mod} sent a warning email to the {user}.".format(
+ _(u"\n{mod} sent a warning email to the {user}.").format(
mod=request.user.username,
user=user.username)
if u'delete' in form.action_to_resolve.data and \
report.is_comment_report():
- deleted_comment = report.comment
- Session.delete(deleted_comment)
+ deleted_comment = report.obj()
+ deleted_comment.delete()
form.resolution_content.data += \
- u"\n{mod} deleted the comment.".format(
+ _(u"\n{mod} deleted the comment.").format(
mod=request.user.username)
elif u'delete' in form.action_to_resolve.data and \
report.is_media_entry_report():
- deleted_media = report.media_entry
+ deleted_media = report.obj()
deleted_media.delete()
form.resolution_content.data += \
- u"\n{mod} deleted the media entry.".format(
+ _(u"\n{mod} deleted the media entry.").format(
mod=request.user.username)
report.archive(
resolver_id=request.user.id,
@@ -119,8 +122,9 @@ def take_away_privileges(user,*privileges):
if len(privileges) == 1:
privilege = Privilege.query.filter(
Privilege.privilege_name==privileges[0]).first()
- user = User.query.filter(
- User.username==user).first()
+ user = LocalUser.query.filter(
+ LocalUser.username==user
+ ).first()
if privilege in user.all_privileges:
user.all_privileges.remove(privilege)
return True
@@ -151,8 +155,9 @@ def give_privileges(user,*privileges):
if len(privileges) == 1:
privilege = Privilege.query.filter(
Privilege.privilege_name==privileges[0]).first()
- user = User.query.filter(
- User.username==user).first()
+ user = LocalUser.query.filter(
+ LocalUser.username==user
+ ).first()
if privilege not in user.all_privileges:
user.all_privileges.append(privilege)
return True
@@ -212,6 +217,6 @@ def parse_report_panel_settings(form):
filters['reporter_id'] = form.reporter.data
filters = dict((k, v)
- for k, v in filters.iteritems() if v)
+ for k, v in six.iteritems(filters) if v)
return filters
diff --git a/mediagoblin/moderation/views.py b/mediagoblin/moderation/views.py
index f4de11ad..ca0e6533 100644
--- a/mediagoblin/moderation/views.py
+++ b/mediagoblin/moderation/views.py
@@ -15,8 +15,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.db.models import (MediaEntry, User,ReportBase, Privilege,
- UserBan)
+from mediagoblin.db.models import (MediaEntry, User, Report, Privilege,
+ UserBan, LocalUser)
from mediagoblin.decorators import (require_admin_or_moderator_login,
active_user_from_url, user_has_privilege,
allow_reporting)
@@ -79,11 +79,13 @@ def moderation_users_detail(request):
'''
Shows details about a particular user.
'''
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter(
+ LocalUser.username==request.matchdict['user']
+ ).first()
active_reports = user.reports_filed_on.filter(
- ReportBase.resolved==None).limit(5)
+ Report.resolved==None).limit(5)
closed_reports = user.reports_filed_on.filter(
- ReportBase.resolved!=None).all()
+ Report.resolved!=None).all()
privileges = Privilege.query
user_banned = UserBan.query.get(user.id)
ban_form = moderation_forms.BanForm()
@@ -114,23 +116,23 @@ def moderation_reports_panel(request):
active_settings['current_page'] = form.active_p.data or 1
closed_settings['current_page'] = form.closed_p.data or 1
filters = [
- getattr(ReportBase,key)==val
- for key,val in filters.viewitems()]
+ getattr(Report,key)==val
+ for key,val in filters.items()]
- all_active = ReportBase.query.filter(
- ReportBase.resolved==None).filter(
+ all_active = Report.query.filter(
+ Report.resolved==None).filter(
*filters)
- all_closed = ReportBase.query.filter(
- ReportBase.resolved!=None).filter(
+ all_closed = Report.query.filter(
+ Report.resolved!=None).filter(
*filters)
# report_list and closed_report_list are the two lists of up to 10
# items which are actually passed to the user in this request
report_list = all_active.order_by(
- ReportBase.created.desc()).offset(
+ Report.created.desc()).offset(
(active_settings['current_page']-1)*10).limit(10)
closed_report_list = all_closed.order_by(
- ReportBase.created.desc()).offset(
+ Report.created.desc()).offset(
(closed_settings['current_page']-1)*10).limit(10)
active_settings['last_page'] = int(ceil(all_active.count()/10.))
@@ -153,7 +155,7 @@ def moderation_reports_detail(request):
erator would go to to take an action to resolve a report.
"""
form = moderation_forms.ReportResolutionForm(request.form)
- report = ReportBase.query.get(request.matchdict['report_id'])
+ report = Report.query.get(request.matchdict['report_id'])
form.take_away_privileges.choices = [
(s.privilege_name,s.privilege_name.title()) \
diff --git a/mediagoblin/notifications/__init__.py b/mediagoblin/notifications/__init__.py
index b6f9f478..d554de2d 100644
--- a/mediagoblin/notifications/__init__.py
+++ b/mediagoblin/notifications/__init__.py
@@ -16,8 +16,8 @@
import logging
-from mediagoblin.db.models import Notification, \
- CommentNotification, CommentSubscription, User
+from mediagoblin.db.models import Notification, CommentSubscription, User, \
+ Comment, GenericModelReference
from mediagoblin.notifications.task import email_notification_task
from mediagoblin.notifications.tools import generate_comment_message
@@ -27,20 +27,29 @@ def trigger_notification(comment, media_entry, request):
'''
Send out notifications about a new comment.
'''
+ # Verify we have the Comment object and not any other type e.g. TextComment
+ if not isinstance(comment, Comment):
+ raise ValueError("Must provide Comment to trigger_notification")
+
+ # Get the associated object associated to the Comment wrapper.
+ comment_object = comment.comment()
+
subscriptions = CommentSubscription.query.filter_by(
media_entry_id=media_entry.id).all()
for subscription in subscriptions:
+ # Check the user wants to be notified, if not, skip.
if not subscription.notify:
continue
- if comment.get_author == subscription.user:
+ # If the subscriber is the current actor, don't bother.
+ if comment_object.get_actor == subscription.user:
continue
- cn = CommentNotification(
+ cn = Notification(
user_id=subscription.user_id,
- subject_id=comment.id)
-
+ )
+ cn.obj = comment
cn.save()
if subscription.send_email:
@@ -61,11 +70,27 @@ def mark_notification_seen(notification):
def mark_comment_notification_seen(comment_id, user):
- notification = CommentNotification.query.filter_by(
+ comment = Comment.query.get(comment_id)
+
+ # If there is no comment, there is no notification
+ if comment == None:
+ return
+
+ comment_gmr = GenericModelReference.query.filter_by(
+ obj_pk=comment.id,
+ model_type=comment.__tablename__
+ ).first()
+
+ # If there is no GMR, there is no notification
+ if comment_gmr == None:
+ return
+
+ notification = Notification.query.filter_by(
user_id=user.id,
- subject_id=comment_id).first()
+ object_id=comment_gmr.id
+ ).first()
- _log.debug('Marking {0} as seen.'.format(notification))
+ _log.debug(u'Marking {0} as seen.'.format(notification))
mark_notification_seen(notification)
diff --git a/mediagoblin/notifications/task.py b/mediagoblin/notifications/task.py
index 52573b57..652b78e2 100644
--- a/mediagoblin/notifications/task.py
+++ b/mediagoblin/notifications/task.py
@@ -20,7 +20,7 @@ from celery import registry
from celery.task import Task
from mediagoblin.tools.mail import send_email
-from mediagoblin.db.models import CommentNotification
+from mediagoblin.db.models import Notification
_log = logging.getLogger(__name__)
@@ -34,8 +34,8 @@ class EmailNotificationTask(Task):
the web server.
'''
def run(self, notification_id, message):
- cn = CommentNotification.query.filter_by(id=notification_id).first()
- _log.info('Sending notification email about {0}'.format(cn))
+ cn = Notification.query.filter_by(id=notification_id).first()
+ _log.info(u'Sending notification email about {0}'.format(cn))
return send_email(
message['from'],
diff --git a/mediagoblin/notifications/tools.py b/mediagoblin/notifications/tools.py
index 25432780..b251f0aa 100644
--- a/mediagoblin/notifications/tools.py
+++ b/mediagoblin/notifications/tools.py
@@ -18,32 +18,38 @@ from mediagoblin.tools.template import render_template
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin import mg_globals
-def generate_comment_message(user, comment, media, request):
+def generate_comment_message(user, comment, commentee, request):
"""
Sends comment email to user when a comment is made on their media.
Args:
- user: the user object to whom the email is sent
- - comment: the comment object referencing user's media
- - media: the media object the comment is about
+ - comment: the comment wrapper object
+ - commentee: the object the comment is on
- request: the request
"""
+ # Get the comment object associated to the wrapper
+ comment_object = comment.comment()
+
+ # Get the URL to the comment
comment_url = request.urlgen(
- 'mediagoblin.user_pages.media_home.view_comment',
- comment=comment.id,
- user=media.get_uploader.username,
- media=media.slug_or_id,
- qualified=True) + '#comment'
+ "mediagoblin.user_pages.media_home.view_comment",
+ comment=comment.id,
+ user=commentee.get_actor.username,
+ media=commentee.slug_or_id,
+ qualified=True) + "#comment"
- comment_author = comment.get_author.username
+ comment_author = comment.comment().get_actor.username
rendered_email = render_template(
request, 'mediagoblin/user_pages/comment_email.txt',
{'username': user.username,
'comment_author': comment_author,
- 'comment_content': comment.content,
- 'comment_url': comment_url})
+ 'comment_content': comment_object.content,
+ 'comment_url': comment_url
+ }
+ )
return {
'from': mg_globals.app_config['email_sender_address'],
@@ -52,4 +58,5 @@ def generate_comment_message(user, comment, media, request):
comment_author=comment_author,
instance_title=mg_globals.app_config['html_title']) \
+ _('commented on your post'),
- 'body': rendered_email}
+ 'body': rendered_email
+ }
diff --git a/mediagoblin/notifications/views.py b/mediagoblin/notifications/views.py
index cfe66b2e..30ecec77 100644
--- a/mediagoblin/notifications/views.py
+++ b/mediagoblin/notifications/views.py
@@ -30,10 +30,10 @@ def subscribe_comments(request, media):
add_comment_subscription(request.user, media)
- messages.add_message(request,
- messages.SUCCESS,
- _('Subscribed to comments on %s!')
- % media.title)
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('Subscribed to comments on %s!') % media.title)
return redirect(request, location=media.url_for_self(request.urlgen))
@@ -43,10 +43,11 @@ def subscribe_comments(request, media):
def silence_comments(request, media):
silence_comment_subscription(request.user, media)
- messages.add_message(request,
- messages.SUCCESS,
- _('You will not receive notifications for comments on'
- ' %s.') % media.title)
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('You will not receive notifications for comments on %s.') %
+ media.title)
return redirect(request, location=media.url_for_self(request.urlgen))
@@ -57,7 +58,10 @@ def mark_all_comment_notifications_seen(request):
Marks all comment notifications seen.
"""
for comment in get_notifications(request.user.id):
- mark_comment_notification_seen(comment.subject_id, request.user)
+ mark_comment_notification_seen(
+ comment.id,
+ request.user
+ )
if request.GET.get('next'):
return redirect(request, location=request.GET.get('next'))
diff --git a/mediagoblin/oauth/__init__.py b/mediagoblin/oauth/__init__.py
index 719b56e7..6dfafea2 100644
--- a/mediagoblin/oauth/__init__.py
+++ b/mediagoblin/oauth/__init__.py
@@ -14,3 +14,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This represents a dummy ID for the Client, RequestToken and AccessToken
+# WARNING: Do not change these without providing a data migration to migrate
+# existing dummy clients already in the database.
+DUMMY_CLIENT_ID = "dummy-client"
+DUMMY_ACCESS_TOKEN = "dummy-access-token"
+DUMMY_REQUEST_TOKEN = "dummy-request-token"
diff --git a/mediagoblin/oauth/oauth.py b/mediagoblin/oauth/oauth.py
index 8229c47d..cdd8c842 100644
--- a/mediagoblin/oauth/oauth.py
+++ b/mediagoblin/oauth/oauth.py
@@ -13,14 +13,14 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import datetime
from oauthlib.common import Request
-from oauthlib.oauth1 import RequestValidator
+from oauthlib.oauth1 import RequestValidator
+from mediagoblin import oauth
from mediagoblin.db.models import NonceTimestamp, Client, RequestToken, AccessToken
-
-
class GMGRequestValidator(RequestValidator):
enforce_ssl = False
@@ -29,14 +29,26 @@ class GMGRequestValidator(RequestValidator):
self.POST = data
super(GMGRequestValidator, self).__init__(*args, **kwargs)
+ def check_nonce(self, nonce):
+ """
+ This checks that the nonce given is a valid nonce
+
+ RequestValidator.check_nonce checks that it's between a maximum and
+ minimum length which, not only does pump.io not do this from what
+ I can see but there is nothing in rfc5849 which suggests a maximum or
+ minium length should be required so I'm removing that check
+ """
+ # Check the nonce only contains a subset of the safe characters.
+ return set(nonce) <= self.safe_characters
+
def save_request_token(self, token, request):
""" Saves request token in db """
client_id = self.POST[u"oauth_consumer_key"]
request_token = RequestToken(
- token=token["oauth_token"],
- secret=token["oauth_token_secret"],
- )
+ token=token["oauth_token"],
+ secret=token["oauth_token_secret"],
+ )
request_token.client = client_id
if u"oauth_callback" in self.POST:
request_token.callback = self.POST[u"oauth_callback"]
@@ -51,47 +63,82 @@ class GMGRequestValidator(RequestValidator):
def save_access_token(self, token, request):
""" Saves access token in db """
access_token = AccessToken(
- token=token["oauth_token"],
- secret=token["oauth_token_secret"],
+ token=token["oauth_token"],
+ secret=token["oauth_token_secret"],
)
access_token.request_token = request.oauth_token
request_token = RequestToken.query.filter_by(token=request.oauth_token).first()
- access_token.user = request_token.user
+ access_token.actor = request_token.actor
access_token.save()
def get_realms(*args, **kwargs):
""" Currently a stub - called when making AccessTokens """
return list()
- def validate_timestamp_and_nonce(self, client_key, timestamp,
- nonce, request, request_token=None,
+ def validate_timestamp_and_nonce(self, client_key, timestamp,
+ nonce, request, request_token=None,
access_token=None):
+ # RFC5849 (OAuth 1.0) section 3.3 says the timestamp is going
+ # to be seconds after the epoch, we need to convert for postgres
+ try:
+ timestamp = datetime.datetime.fromtimestamp(float(timestamp))
+ except ValueError:
+ # Well, the client must have passed up something ridiculous
+ return False
+
nc = NonceTimestamp.query.filter_by(timestamp=timestamp, nonce=nonce)
nc = nc.first()
if nc is None:
return True
-
+
return False
def validate_client_key(self, client_key, request):
""" Verifies client exists with id of client_key """
- client = Client.query.filter_by(id=client_key).first()
+ client_query = Client.query.filter(Client.id != oauth.DUMMY_CLIENT_ID)
+ client = client_query.filter_by(id=client_key).first()
if client is None:
return False
-
+
+ return True
+
+ def validate_verifier(self, token, verifier):
+ """ Verifies the verifier token is correct. """
+ request_token = RequestToken.query.filter_by(token=token).first()
+ if request_token is None:
+ return False
+
+ if request_token.verifier != verifier:
+ return False
+
return True
def validate_access_token(self, client_key, token, request):
""" Verifies token exists for client with id of client_key """
- client = Client.query.filter_by(id=client_key).first()
- token = AccessToken.query.filter_by(token=token)
- token = token.first()
+ # Get the client for the request
+ client_query = Client.query.filter(Client.id != oauth.DUMMY_CLIENT_ID)
+ client = client_query.filter_by(id=client_key).first()
- if token is None:
+ # If the client is invalid then it's invalid
+ if client is None:
return False
- request_token = RequestToken.query.filter_by(token=token.request_token)
- request_token = request_token.first()
+ # Look up the AccessToken
+ access_token_query = AccessToken.query.filter(
+ AccessToken.token != oauth.DUMMY_ACCESS_TOKEN
+ )
+ access_token = access_token_query.filter_by(token=token).first()
+
+ # If there isn't one - we can't validate.
+ if access_token is None:
+ return False
+
+ # Check that the client matches the on
+ request_token_query = RequestToken.query.filter(
+ RequestToken.token != oauth.DUMMY_REQUEST_TOKEN,
+ RequestToken.token == access_token.request_token
+ )
+ request_token = request_token_query.first()
if client.id != request_token.client:
return False
@@ -112,6 +159,18 @@ class GMGRequestValidator(RequestValidator):
access_token = AccessToken.query.filter_by(token=token).first()
return access_token.secret
+ @property
+ def dummy_client(self):
+ return oauth.DUMMY_CLIENT_ID
+
+ @property
+ def dummy_request_token(self):
+ return oauth.DUMMY_REQUEST_TOKEN
+
+ @property
+ def dummy_access_token(self):
+ return oauth.DUMMY_ACCESS_TOKEN
+
class GMGRequest(Request):
"""
Fills in data to produce a oauth.common.Request object from a
@@ -119,14 +178,14 @@ class GMGRequest(Request):
"""
def __init__(self, request, *args, **kwargs):
- """
+ """
:param request: werkzeug request object
-
+
any extra params are passed to oauthlib.common.Request object
"""
kwargs["uri"] = kwargs.get("uri", request.url)
kwargs["http_method"] = kwargs.get("http_method", request.method)
- kwargs["body"] = kwargs.get("body", request.get_data())
+ kwargs["body"] = kwargs.get("body", request.data)
kwargs["headers"] = kwargs.get("headers", dict(request.headers))
super(GMGRequest, self).__init__(*args, **kwargs)
diff --git a/mediagoblin/oauth/routing.py b/mediagoblin/oauth/routing.py
index e45077bb..7f2aa11d 100644
--- a/mediagoblin/oauth/routing.py
+++ b/mediagoblin/oauth/routing.py
@@ -18,25 +18,25 @@ from mediagoblin.tools.routing import add_route
# client registration & oauth
add_route(
- "mediagoblin.oauth",
+ "mediagoblin.oauth.client_register",
"/api/client/register",
"mediagoblin.oauth.views:client_register"
)
add_route(
- "mediagoblin.oauth",
+ "mediagoblin.oauth.request_token",
"/oauth/request_token",
"mediagoblin.oauth.views:request_token"
)
add_route(
- "mediagoblin.oauth",
+ "mediagoblin.oauth.authorize",
"/oauth/authorize",
"mediagoblin.oauth.views:authorize",
)
add_route(
- "mediagoblin.oauth",
+ "mediagoblin.oauth.access_token",
"/oauth/access_token",
"mediagoblin.oauth.views:access_token"
)
diff --git a/mediagoblin/oauth/views.py b/mediagoblin/oauth/views.py
index f424576b..ef91eb91 100644
--- a/mediagoblin/oauth/views.py
+++ b/mediagoblin/oauth/views.py
@@ -15,8 +15,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import datetime
-import string
+import urllib
+import six
+
+from oauthlib.oauth1.rfc5849.utils import UNICODE_ASCII_CHARACTER_SET
from oauthlib.oauth1 import (RequestTokenEndpoint, AuthorizationEndpoint,
AccessTokenEndpoint)
@@ -37,8 +40,6 @@ from mediagoblin.db.models import NonceTimestamp, Client, RequestToken
# possible client types
CLIENT_TYPES = ["web", "native"] # currently what pump supports
-OAUTH_ALPHABET = (string.ascii_letters.decode('ascii') +
- string.digits.decode('ascii'))
@csrf_exempt
def client_register(request):
@@ -107,8 +108,8 @@ def client_register(request):
return json_response({"error": error}, status=400)
# generate the client_id and client_secret
- client_id = random_string(22, OAUTH_ALPHABET)
- client_secret = random_string(43, OAUTH_ALPHABET)
+ client_id = random_string(22, UNICODE_ASCII_CHARACTER_SET)
+ client_secret = random_string(43, UNICODE_ASCII_CHARACTER_SET)
expirey = 0 # for now, lets not have it expire
expirey_db = None if expirey == 0 else expirey
application_type = data["application_type"]
@@ -125,21 +126,21 @@ def client_register(request):
error = "Invalid registration type"
return json_response({"error": error}, status=400)
- logo_url = data.get("logo_url", client.logo_url)
- if logo_url is not None and not validate_url(logo_url):
- error = "Logo URL {0} is not a valid URL.".format(logo_url)
+ logo_uri = data.get("logo_uri", client.logo_url)
+ if logo_uri is not None and not validate_url(logo_uri):
+ error = "Logo URI {0} is not a valid URI.".format(logo_uri)
return json_response(
{"error": error},
status=400
)
else:
- client.logo_url = logo_url
+ client.logo_url = logo_uri
client.application_name = data.get("application_name", None)
contacts = data.get("contacts", None)
if contacts is not None:
- if type(contacts) is not unicode:
+ if not isinstance(contacts, six.text_type):
error = "Contacts must be a string of space-seporated email addresses."
return json_response({"error": error}, status=400)
@@ -155,7 +156,7 @@ def client_register(request):
redirect_uris = data.get("redirect_uris", None)
if redirect_uris is not None:
- if type(redirect_uris) is not unicode:
+ if not isinstance(redirect_uris, six.text_type):
error = "redirect_uris must be space-seporated URLs."
return json_response({"error": error}, status=400)
@@ -190,10 +191,6 @@ def request_token(request):
error = "Could not decode data."
return json_response({"error": error}, status=400)
- if data == "":
- error = "Unknown Content-Type"
- return json_response({"error": error}, status=400)
-
if not data and request.headers:
data = request.headers
@@ -214,7 +211,7 @@ def request_token(request):
error = "Invalid client_id"
return json_response({"error": error}, status=400)
- # make request token and return to client
+ # make request token and return to client
request_validator = GMGRequestValidator(authorization)
rv = RequestTokenEndpoint(request_validator)
tokens = rv.create_request_token(request, authorization)
@@ -252,12 +249,13 @@ def authorize(request):
if oauth_request.verifier is None:
orequest = GMGRequest(request)
+ orequest.resource_owner_key = token
request_validator = GMGRequestValidator()
auth_endpoint = AuthorizationEndpoint(request_validator)
verifier = auth_endpoint.create_verifier(orequest, {})
oauth_request.verifier = verifier["oauth_verifier"]
- oauth_request.user = request.user.id
+ oauth_request.actor = request.user.id
oauth_request.save()
# find client & build context
@@ -316,10 +314,13 @@ def authorize_finish(request):
oauth_request.verifier
)
+ # It's come from the OAuth headers so it'll be encoded.
+ redirect_url = urllib.unquote(oauth_request.callback)
+
return redirect(
request,
querystring=querystring,
- location=oauth_request.callback
+ location=redirect_url
)
@csrf_exempt
@@ -333,10 +334,19 @@ def access_token(request):
error = "Missing required parameter."
return json_response({"error": error}, status=400)
-
+ request.resource_owner_key = parsed_tokens["oauth_consumer_key"]
request.oauth_token = parsed_tokens["oauth_token"]
request_validator = GMGRequestValidator(data)
+
+ # Check that the verifier is valid
+ verifier_valid = request_validator.validate_verifier(
+ token=request.oauth_token,
+ verifier=parsed_tokens["oauth_verifier"]
+ )
+ if not verifier_valid:
+ error = "Verifier code or token incorrect"
+ return json_response({"error": error}, status=401)
+
av = AccessTokenEndpoint(request_validator)
tokens = av.create_access_token(request, {})
return form_response(tokens)
-
diff --git a/mediagoblin/plugins/api/tools.py b/mediagoblin/plugins/api/tools.py
index d1b3ebb1..e406888e 100644
--- a/mediagoblin/plugins/api/tools.py
+++ b/mediagoblin/plugins/api/tools.py
@@ -18,9 +18,11 @@ import logging
import json
from functools import wraps
-from urlparse import urljoin
from werkzeug.exceptions import Forbidden
from werkzeug.wrappers import Response
+
+from six.moves.urllib.parse import urljoin
+
from mediagoblin import mg_globals
from mediagoblin.tools.pluginapi import PluginManager
from mediagoblin.storage.filestorage import BasicFileStorage
@@ -60,12 +62,12 @@ def get_entry_serializable(entry, urlgen):
to views.
'''
return {
- 'user': entry.get_uploader.username,
- 'user_id': entry.get_uploader.id,
- 'user_bio': entry.get_uploader.bio,
- 'user_bio_html': entry.get_uploader.bio_html,
+ 'user': entry.get_actor.username,
+ 'user_id': entry.get_actor.id,
+ 'user_bio': entry.get_actor.bio,
+ 'user_bio_html': entry.get_actor.bio_html,
'user_permalink': urlgen('mediagoblin.user_pages.user_home',
- user=entry.get_uploader.username,
+ user=entry.get_actor.username,
qualified=True),
'id': entry.id,
'created': entry.created.isoformat(),
diff --git a/mediagoblin/plugins/api/views.py b/mediagoblin/plugins/api/views.py
index e8af7988..fdd22ace 100644
--- a/mediagoblin/plugins/api/views.py
+++ b/mediagoblin/plugins/api/views.py
@@ -17,6 +17,8 @@
import json
import logging
+import six
+
from werkzeug.exceptions import BadRequest
from werkzeug.wrappers import Response
@@ -24,8 +26,7 @@ from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.response import json_response
from mediagoblin.decorators import require_active_login
from mediagoblin.meddleware.csrf import csrf_exempt
-from mediagoblin.media_types import \
- InvalidFileType, FileTypeNotSupported
+from mediagoblin.media_types import FileTypeNotSupported
from mediagoblin.plugins.api.tools import api_auth, get_entry_serializable
from mediagoblin.submit.lib import \
check_file_field, submit_media, get_upload_file_limits, \
@@ -51,21 +52,18 @@ def post_entry(request):
_log.debug('File field not found')
raise BadRequest()
- upload_limit, max_file_size = get_upload_file_limits(request.user)
-
callback_url = request.form.get('callback_url')
if callback_url:
- callback_url = unicode(callback_url)
+ callback_url = six.text_type(callback_url)
try:
entry = submit_media(
mg_app=request.app, user=request.user,
submitted_file=request.files['file'],
filename=request.files['file'].filename,
- title=unicode(request.form.get('title')),
- description=unicode(request.form.get('description')),
- license=unicode(request.form.get('license', '')),
- tags_string=unicode(request.form.get('tags', '')),
- upload_limit=upload_limit, max_file_size=max_file_size,
+ title=six.text_type(request.form.get('title')),
+ description=six.text_type(request.form.get('description')),
+ license=six.text_type(request.form.get('license', '')),
+ tags_string=six.text_type(request.form.get('tags', '')),
callback_url=callback_url)
return json_response(get_entry_serializable(entry, request.urlgen))
@@ -81,17 +79,8 @@ def post_entry(request):
except UserPastUploadLimit:
raise BadRequest(
_('Sorry, you have reached your upload limit.'))
-
- except Exception as e:
- '''
- This section is intended to catch exceptions raised in
- mediagoblin.media_types
- '''
- if isinstance(e, InvalidFileType) or \
- isinstance(e, FileTypeNotSupported):
- raise BadRequest(unicode(e))
- else:
- raise
+ except FileTypeNotSupported as e:
+ raise BadRequest(e)
@api_auth
@@ -103,7 +92,7 @@ def api_test(request):
# TODO: This is the *only* thing using Response() here, should that
# not simply use json_response()?
- return Response(json.dumps(user_data))
+ return Response(json.dumps(user_data, sort_keys=True))
def get_entries(request):
diff --git a/mediagoblin/plugins/archivalook/migrations/b10b5f822789_archivalook_plugin_initial_migration.py b/mediagoblin/plugins/archivalook/migrations/b10b5f822789_archivalook_plugin_initial_migration.py
new file mode 100644
index 00000000..1bedcf3c
--- /dev/null
+++ b/mediagoblin/plugins/archivalook/migrations/b10b5f822789_archivalook_plugin_initial_migration.py
@@ -0,0 +1,37 @@
+"""ArchivaLook plugin initial migration
+
+Revision ID: b10b5f822789
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:37:51.551856
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'b10b5f822789'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('archivalook_plugin',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table('archivalook__featured_media'):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'archivalook__featured_media',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('media_entry_id', sa.Integer(), nullable=False),
+ sa.Column('display_type', sa.Unicode(), nullable=False),
+ sa.Column('order', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['media_entry_id'],
+ ['core__media_entries.id']),
+ sa.PrimaryKeyConstraint('id'))
+
+
+def downgrade():
+ op.drop_table('archivalook__featured_media')
diff --git a/mediagoblin/plugins/archivalook/templates/archivalook/feature.html b/mediagoblin/plugins/archivalook/templates/archivalook/feature.html
index 6bcf792e..b19029c3 100644
--- a/mediagoblin/plugins/archivalook/templates/archivalook/feature.html
+++ b/mediagoblin/plugins/archivalook/templates/archivalook/feature.html
@@ -35,7 +35,7 @@
</a></strong>
<p>
{% trans %}
- Go to the page of the media entry you want to feature. Copy it's URL and
+ Go to the page of the media entry you want to feature. Copy its URL and
then paste it into a new line in the text box above. There should be only
one url per line. The url that you paste into the text box should be under
the header describing how prominent a feature it will be (whether Primary,
@@ -52,7 +52,7 @@
Yes. If you would prefer, you may go to the media homepage of the piece
of media you would like to feature or unfeature and look at the bar to
the side of the media entry. If the piece of media has not been featured
- yet you should see a button that says 'Feature'. Press that button and
+ yet you should see a button that says "Feature". Press that button and
the media will be featured as a Primary Feature at the top of the page.
All other featured media entries will remain as features, but will be
pushed further down the page.<br /><br />
@@ -86,7 +86,7 @@
featured?{% endtrans %}</a></strong>
<p>
{% trans %}
- When a media entry is featured, the entry's title, it's thumbnail and a
+ When a media entry is featured, the entry's title, its thumbnail and a
portion of its description will be displayed on your website's front page.
The number of characters displayed varies on the prominence of the feature.
Primary Features display the first 512 characters of their description,
diff --git a/mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_head.html b/mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_head.html
index a53694b3..d1ea0b9a 100644
--- a/mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_head.html
+++ b/mediagoblin/plugins/archivalook/templates/archivalook/feature_displays/audio_head.html
@@ -1,5 +1,3 @@
<link rel="stylesheet" type="text/css" href="{{ request.staticdirect('/css/audio.css') }}" />
<script type="text/javascript" src="{{ request.staticdirect(
- '/js/extlib/html5slider.js') }}"></script>
- <script type="text/javascript" src="{{ request.staticdirect(
'/js/audio.js') }}"></script>
diff --git a/mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html b/mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html
index c5b8a7d6..942a888b 100644
--- a/mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html
+++ b/mediagoblin/plugins/archivalook/templates/archivalook/feature_media_sidebar.html
@@ -21,7 +21,7 @@
{% if not media_feature %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.media_feature',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class="button_action" id="button_featuremedia" title="{% trans %}
Feature Media {% endtrans %}">
@@ -29,7 +29,7 @@ Feature Media {% endtrans %}">
{% else %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.media_unfeature',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class="button_action" id="button_unfeaturemedia" title="{% trans %}
Unfeature Media {% endtrans %}">
@@ -37,7 +37,7 @@ Unfeature Media {% endtrans %}">
{% if not media_feature.display_type == 'primary' %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.feature_promote',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class="button_action" id="button_promotefeature" title="{% trans %}
Promote Feature {% endtrans %}">
@@ -45,7 +45,7 @@ Promote Feature {% endtrans %}">
{% endif %}{% if not media_feature.display_type == 'tertiary' %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.feature_demote',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class="button_action" id="button_demotefeature" title="{% trans %}
Demote Feature {% endtrans %}">
diff --git a/mediagoblin/plugins/archivalook/templates/archivalook/root.html b/mediagoblin/plugins/archivalook/templates/archivalook/root.html
index 72fe8656..4dbd0f9e 100644
--- a/mediagoblin/plugins/archivalook/templates/archivalook/root.html
+++ b/mediagoblin/plugins/archivalook/templates/archivalook/root.html
@@ -59,17 +59,19 @@
{%- elif request.user and request.user.has_privilege('featurer') %}
<div>
<h2>{% trans %}Nothing is currently featured.{% endtrans %}</h2>
- {% trans %}If you would like to feature a
+ {% trans -%}
+ If you would like to feature a
piece of media, go to that media entry's homepage and click the button
- that says{% endtrans %} <a class="button_action">Feature</a>.
- {% trans %}You're seeing this page because you are a user capable of
+ that says <a class="button_action">Feature</a>.
+ {%- endtrans %}
+ {% trans featured_media_url=request.urlgen('manage-featured-media') -%}
+ You're seeing this page because you are a user capable of
featuring media, a regular user would see a blank page, so be sure to
have media featured as long as your instance has the 'archivalook'
plugin enabled. A more advanced tool to manage features can be found
- in the{% endtrans %}
- <a href="{{ request.urlgen(
- 'manage-featured-media') }}">
- {% trans %}feature management panel.{% endtrans %}</a>
+ in the <a href="{{ featured_media_url }}">feature management panel.</a>
+ {%- endtrans %}
+ </a>
</div>
</div>
{%- endif %}
diff --git a/mediagoblin/plugins/archivalook/tools.py b/mediagoblin/plugins/archivalook/tools.py
index 9c715c9b..ad2eee5f 100644
--- a/mediagoblin/plugins/archivalook/tools.py
+++ b/mediagoblin/plugins/archivalook/tools.py
@@ -13,7 +13,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.db.models import MediaEntry, User
+import six
+
+from mediagoblin.db.models import MediaEntry, User, LocalUser
from mediagoblin.plugins.archivalook.models import FeaturedMedia
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
from mediagoblin.plugins.archivalook.models import FeaturedMedia
@@ -32,11 +34,12 @@ def get_media_entry_from_uploader_slug(uploader_username, slug):
:returns media A MediaEntry object or None if no entry
matches the specifications.
"""
- uploader = User.query.filter(
- User.username == uploader_username).first()
+ uploader = LocalUser.query.filter(
+ LocalUser.username==uploader_username
+ ).first()
media = MediaEntry.query.filter(
- MediaEntry.get_uploader == uploader ).filter(
- MediaEntry.slug == slug).first()
+ MediaEntry.get_actor == uploader ).filter(
+ MediaEntry.slug == slug).first()
return media
@@ -53,7 +56,7 @@ def parse_url(url):
who uploaded the piece of media, slug is
the media entry's url slug.
"""
- url = unicode(url)
+ url = six.text_type(url)
u_end, m_start, m_end, end = (url.find('/u/') + 3,
url.find('/m/'),
url.find('/m/') + 3,
@@ -84,7 +87,7 @@ def split_featured_media_list(featured_media):
or tertiary)
"""
- featured_media = unicode(featured_media)
+ featured_media = six.text_type(featured_media)
featured_media_list = featured_media.split("\n")
display_type = 0
media_already_featured = []
@@ -138,7 +141,7 @@ def create_featured_media_textbox():
for feature in feature_list:
media_entry = feature.media_entry
output_text += u'/u/{uploader_username}/m/{media_slug}/\n'.format(
- uploader_username = media_entry.get_uploader.username,
+ uploader_username = media_entry.get_actor.username,
media_slug = media_entry.slug)
@@ -289,4 +292,3 @@ def demote_feature(media_entry):
elif target_feature.display_type == u'primary':
target_feature.display_type = u'secondary'
target_feature.save()
-
diff --git a/mediagoblin/plugins/basic_auth/README.rst b/mediagoblin/plugins/basic_auth/README.rst
index 82f247ed..87a7b16f 100644
--- a/mediagoblin/plugins/basic_auth/README.rst
+++ b/mediagoblin/plugins/basic_auth/README.rst
@@ -5,7 +5,7 @@
===================
The basic_auth plugin is enabled by default in mediagoblin.ini. This plugin
-provides basic username and password authentication for GNU Mediagoblin.
+provides basic username and password authentication for GNU MediaGoblin.
This plugin can be enabled alongside :ref:`openid-chapter` and
:ref:`persona-chapter`.
diff --git a/mediagoblin/plugins/basic_auth/__init__.py b/mediagoblin/plugins/basic_auth/__init__.py
index 64564c7f..31a4fd95 100644
--- a/mediagoblin/plugins/basic_auth/__init__.py
+++ b/mediagoblin/plugins/basic_auth/__init__.py
@@ -19,7 +19,7 @@ import os
from mediagoblin.plugins.basic_auth import forms as auth_forms
from mediagoblin.plugins.basic_auth import tools as auth_tools
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import LocalUser
from mediagoblin.tools import pluginapi
from sqlalchemy import or_
from mediagoblin.tools.staticdirect import PluginStatic
@@ -56,10 +56,10 @@ def setup_plugin():
def get_user(**kwargs):
username = kwargs.pop('username', None)
if username:
- user = User.query.filter(
+ user = LocalUser.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
return user
diff --git a/mediagoblin/plugins/basic_auth/forms.py b/mediagoblin/plugins/basic_auth/forms.py
index 42b84bf3..3d684e91 100644
--- a/mediagoblin/plugins/basic_auth/forms.py
+++ b/mediagoblin/plugins/basic_auth/forms.py
@@ -20,7 +20,7 @@ from mediagoblin.auth.tools import normalize_user_or_email_field
class RegistrationForm(wtforms.Form):
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_email=False)])
@@ -28,17 +28,17 @@ class RegistrationForm(wtforms.Form):
_('Password'),
[wtforms.validators.InputRequired(),
wtforms.validators.Length(min=5, max=1024)])
- email = wtforms.TextField(
+ email = wtforms.StringField(
_('Email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
class LoginForm(wtforms.Form):
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username or Email'),
[wtforms.validators.InputRequired(),
- normalize_user_or_email_field()])
+ normalize_user_or_email_field(is_login=True)])
password = wtforms.PasswordField(
_('Password'))
stay_logged_in = wtforms.BooleanField(
@@ -47,7 +47,7 @@ class LoginForm(wtforms.Form):
class ForgotPassForm(wtforms.Form):
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username or email'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field()])
diff --git a/mediagoblin/plugins/basic_auth/tools.py b/mediagoblin/plugins/basic_auth/tools.py
index f943bf39..13f240b2 100644
--- a/mediagoblin/plugins/basic_auth/tools.py
+++ b/mediagoblin/plugins/basic_auth/tools.py
@@ -16,6 +16,8 @@
import bcrypt
import random
+import six
+
from mediagoblin import mg_globals
from mediagoblin.tools.crypto import get_timed_signer_url
from mediagoblin.tools.mail import send_email
@@ -66,7 +68,7 @@ def bcrypt_gen_password_hash(raw_pass, extra_salt=None):
if extra_salt:
raw_pass = u"%s:%s" % (extra_salt, raw_pass)
- return unicode(
+ return six.text_type(
bcrypt.hashpw(raw_pass.encode('utf-8'), bcrypt.gensalt()))
diff --git a/mediagoblin/plugins/basic_auth/views.py b/mediagoblin/plugins/basic_auth/views.py
index 02d370f0..f398f0d2 100644
--- a/mediagoblin/plugins/basic_auth/views.py
+++ b/mediagoblin/plugins/basic_auth/views.py
@@ -16,7 +16,7 @@
from itsdangerous import BadSignature
from mediagoblin import messages
-from mediagoblin.db.models import User
+from mediagoblin.db.models import LocalUser
from mediagoblin.decorators import require_active_login
from mediagoblin.plugins.basic_auth import forms, tools
from mediagoblin.tools.crypto import get_timed_signer_url
@@ -48,7 +48,7 @@ def forgot_password(request):
found_by_email = '@' in fp_form.username.data
if found_by_email:
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
email=fp_form.username.data).first()
# Don't reveal success in case the lookup happened by email address.
success_message = _("If that email address (case sensitive!) is "
@@ -56,24 +56,27 @@ def forgot_password(request):
"instructions on how to change your password.")
else: # found by username
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username=fp_form.username.data).first()
if user is None:
- messages.add_message(request,
- messages.WARNING,
- _("Couldn't find someone with that username."))
- return redirect(request, 'mediagoblin.auth.forgot_password')
+ messages.add_message(
+ request,
+ messages.WARNING,
+ _("Couldn't find someone with that username."))
+ return redirect(request,
+ 'mediagoblin.plugins.basic_auth.forgot_password')
success_message = _("An email has been sent with instructions "
"on how to change your password.")
if user and user.has_privilege(u'active') is False:
# Don't send reminder because user is inactive or has no verified email
- messages.add_message(request,
+ messages.add_message(
+ request,
messages.WARNING,
- _("Could not send password recovery email as your username is in"
- "active or your account's email address has not been verified."))
+ _("Could not send password recovery email as your username is "
+ "inactive or your account's email address has not been verified."))
return redirect(request, 'mediagoblin.user_pages.user_home',
user=user.username)
@@ -114,7 +117,7 @@ def verify_forgot_password(request):
'index')
# check if it's a valid user id
- user = User.query.filter_by(id=int(token)).first()
+ user = LocalUser.query.filter_by(id=int(token)).first()
# no user in db
if not user:
@@ -153,15 +156,17 @@ def verify_forgot_password(request):
#
# if not user.email_verified:
# messages.add_message(
- # request, messages.ERROR,
+ # request,
+ # messages.ERROR,
# _('You need to verify your email before you can reset your'
# ' password.'))
if not user.status == 'active':
messages.add_message(
- request, messages.ERROR,
- _('You are no longer an active user. Please contact the system'
- ' admin to reactivate your account.'))
+ request,
+ messages.ERROR,
+ _("You are no longer an active user. Please contact the system "
+ "admin to reactivate your account."))
return redirect(
request, 'index')
@@ -211,7 +216,8 @@ def change_pass(request):
user.save()
messages.add_message(
- request, messages.SUCCESS,
+ request,
+ messages.SUCCESS,
_('Your password was changed successfully'))
return redirect(request, 'mediagoblin.edit.account')
diff --git a/mediagoblin/plugins/flatpagesfile/README.rst b/mediagoblin/plugins/flatpagesfile/README.rst
index 59cd6217..0354a46c 100644
--- a/mediagoblin/plugins/flatpagesfile/README.rst
+++ b/mediagoblin/plugins/flatpagesfile/README.rst
@@ -57,7 +57,7 @@ Examples: ``flatpages-about``, ``about-view``, ``contact-view``, ...
The value has two parts separated by commas:
-1. **route path**: This is the url that this route matches.
+1. **route path**: This is the URL that this route matches.
Examples: ``/about``, ``/contact``, ``/pages/about``, ...
@@ -74,7 +74,7 @@ The value has two parts separated by commas:
For example: ``'/siteadmin/{adminname:\w+}'``
-2. **template**: The template to use for this url. The template is in
+2. **template**: The template to use for this URL. The template is in
the flatpagesfile template directory, so you just need to specify
the file name.
@@ -139,10 +139,10 @@ template::
Recipes
=======
-Url variables
+URL variables
-------------
-You can handle urls like ``/about/{name}`` and access the name that's
+You can handle URLs like ``/about/{name}`` and access the name that's
passed in in the template.
Sample route::
diff --git a/mediagoblin/plugins/geolocation/__init__.py b/mediagoblin/plugins/geolocation/__init__.py
index 5d14590e..06aab68e 100644
--- a/mediagoblin/plugins/geolocation/__init__.py
+++ b/mediagoblin/plugins/geolocation/__init__.py
@@ -21,13 +21,13 @@ PLUGIN_DIR = os.path.dirname(__file__)
def setup_plugin():
config = pluginapi.get_config('mediagoblin.plugins.geolocation')
-
+
# Register the template path.
pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates'))
pluginapi.register_template_hooks(
- {"image_sideinfo": "mediagoblin/plugins/geolocation/map.html",
- "image_head": "mediagoblin/plugins/geolocation/map_js_head.html"})
+ {"location_info": "mediagoblin/plugins/geolocation/map.html",
+ "location_head": "mediagoblin/plugins/geolocation/map_js_head.html"})
hooks = {
diff --git a/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
index 70f837ff..be608ac0 100644
--- a/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
+++ b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
@@ -17,14 +17,13 @@
#}
{% block geolocation_map %}
- {% if media.media_data.gps_latitude is defined
- and media.media_data.gps_latitude
- and media.media_data.gps_longitude is defined
- and media.media_data.gps_longitude %}
- <h3>{% trans %}Location{% endtrans %}</h3>
+ {% if model.location
+ and model.get_location.position
+ and "latitude" in model.get_location.position
+ and "longitude" in model.get_location.position %}
<div>
- {%- set lon = media.media_data.gps_longitude %}
- {%- set lat = media.media_data.gps_latitude %}
+ {%- set lon = model.get_location.position.longitude %}
+ {%- set lat = model.get_location.position.latitude %}
{%- set osm_url = "http://openstreetmap.org/?mlat={lat}&mlon={lon}".format(lat=lat, lon=lon) %}
<div id="tile-map" style="width: 100%; height: 196px;">
<input type="hidden" id="gps-longitude"
@@ -44,8 +43,9 @@
href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>
contributors
</li><li>Imaging &copy;<a
- href="http://mapquest.com">MapQuest</a></li><li>Maps powered by
- <a href="http://leafletjs.com/"> Leaflet</a></li></ul>
+ href="https://www.openstreetmap.org">OpenStreetMap
+ contributors</a></li><li>Maps powered by
+ <a href="http://leafletjs.com/">Leaflet</a></li></ul>
</div>
<p>
<small>
diff --git a/mediagoblin/plugins/httpapiauth/__init__.py b/mediagoblin/plugins/httpapiauth/__init__.py
index 2b2d593c..d7180463 100644
--- a/mediagoblin/plugins/httpapiauth/__init__.py
+++ b/mediagoblin/plugins/httpapiauth/__init__.py
@@ -16,6 +16,8 @@
import logging
+import six
+
from werkzeug.exceptions import Unauthorized
from mediagoblin.auth.tools import check_login_simple
@@ -40,7 +42,7 @@ class HTTPAuth(Auth):
if not request.authorization:
return False
- user = check_login_simple(unicode(request.authorization['username']),
+ user = check_login_simple(six.text_type(request.authorization['username']),
request.authorization['password'])
if user:
diff --git a/mediagoblin/plugins/ldap/README.rst b/mediagoblin/plugins/ldap/README.rst
index ea9a34b3..049b5c4d 100644
--- a/mediagoblin/plugins/ldap/README.rst
+++ b/mediagoblin/plugins/ldap/README.rst
@@ -14,16 +14,16 @@
.. _ldap-plugin:
=============
- ldap plugin
+ LDAP plugin
=============
.. Warning::
This plugin is not compatible with the other authentication plugins.
-This plugin allow your GNU Mediagoblin instance to authenticate against an
+This plugin allow your GNU MediaGoblin instance to authenticate against an
LDAP server.
-Set up the ldap plugin
+Set up the LDAP plugin
======================
1. Install the ``python-ldap`` package.
@@ -32,13 +32,13 @@ Set up the ldap plugin
[[mediagoblin.plugins.ldap]]
-Configuring the ldap plugin
+Configuring the LDAP plugin
===========================
-This plugin allows you to use multiple ldap servers for authentication.
+This plugin allows you to use multiple LDAP servers for authentication.
In order to configure a server, add the following to you MediaGoblin .ini file
-under the ldap plugin::
+under the LDAP plugin::
[[mediagoblin.plugins.ldap]]
[[[server1]]]
@@ -50,15 +50,15 @@ under the ldap plugin::
Make any necessary changes to the above to work with your sever. Make sure
``{username}`` is where the username should be in LDAP_USER_DN_TEMPLATE.
-If you would like to fetch the users email from the ldap server upon account
+If you would like to fetch the users email from the LDAP server upon account
registration, add ``LDAP_SEARCH_BASE = 'ou=users,dc=testathon,dc=net'`` and
``EMAIL_SEARCH_FIELD = 'mail'`` under you server configuration in your
MediaGoblin .ini file.
.. Warning::
By default, this plugin provides no encryption when communicating with the
- ldap servers. If you would like to use an SSL connection, change
- LDAP_SERVER_URI to use ``ldaps://`` and whichever port you use. Default ldap
+ LDAP servers. If you would like to use an SSL connection, change
+ LDAP_SERVER_URI to use ``ldaps://`` and whichever port you use. Default LDAP
port for SSL connections is 636. If you would like to use a TLS connection,
add ``LDAP_START_TLS = 'true'`` under your server configuration in your
MediaGoblin .ini file.
diff --git a/mediagoblin/plugins/ldap/forms.py b/mediagoblin/plugins/ldap/forms.py
index 1f1439ab..3d966e03 100644
--- a/mediagoblin/plugins/ldap/forms.py
+++ b/mediagoblin/plugins/ldap/forms.py
@@ -24,14 +24,14 @@ class RegisterForm(wtforms.Form):
'',
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_email=False)])
- email = wtforms.TextField(
+ email = wtforms.StringField(
_('Email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
class LoginForm(wtforms.Form):
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field()])
diff --git a/mediagoblin/plugins/ldap/tools.py b/mediagoblin/plugins/ldap/tools.py
index 1c436792..2be2dcd7 100644
--- a/mediagoblin/plugins/ldap/tools.py
+++ b/mediagoblin/plugins/ldap/tools.py
@@ -16,6 +16,8 @@
import ldap
import logging
+import six
+
from mediagoblin.tools import pluginapi
_log = logging.getLogger(__name__)
@@ -47,7 +49,7 @@ class LDAP(object):
return email
def login(self, username, password):
- for k, v in self.ldap_settings.iteritems():
+ for k, v in six.iteritems(self.ldap_settings):
try:
self._connect(v)
user_dn = v['LDAP_USER_DN_TEMPLATE'].format(username=username)
diff --git a/mediagoblin/plugins/ldap/views.py b/mediagoblin/plugins/ldap/views.py
index aef1bf56..e10c7f60 100644
--- a/mediagoblin/plugins/ldap/views.py
+++ b/mediagoblin/plugins/ldap/views.py
@@ -13,9 +13,12 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import six
+
from mediagoblin import mg_globals, messages
from mediagoblin.auth.tools import register_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.decorators import allow_registration, auth_enabled
from mediagoblin.plugins.ldap import forms
from mediagoblin.plugins.ldap.tools import LDAP
@@ -35,12 +38,13 @@ def login(request):
login_form.password.data)
if username:
- user = User.query.filter_by(
- username=username).first()
+ user = LocalUser.query.filter(
+ LocalUser.username==username
+ ).first()
if user:
# set up login in session
- request.session['user_id'] = unicode(user.id)
+ request.session['user_id'] = six.text_type(user.id)
request.session.save()
if request.form.get('next'):
diff --git a/mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html b/mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html
index 3a9d872c..15ea1536 100644
--- a/mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html
+++ b/mediagoblin/plugins/metadata_display/templates/mediagoblin/plugins/metadata_display/metadata_table.html
@@ -35,7 +35,7 @@
{% endif %}
{% if request.user and request.user.has_privilege('admin') %}
<a href="{{ request.urlgen('mediagoblin.edit.metadata',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media_id=media.id) }}">
{% trans %}Edit Metadata{% endtrans %}</a>
{% endif %}
diff --git a/mediagoblin/plugins/oauth/README.rst b/mediagoblin/plugins/oauth/README.rst
deleted file mode 100644
index 753b180f..00000000
--- a/mediagoblin/plugins/oauth/README.rst
+++ /dev/null
@@ -1,148 +0,0 @@
-==============
- OAuth plugin
-==============
-
-.. warning::
- In its current state. This plugin has received no security audit.
- Development has been entirely focused on Making It Work(TM). Use this
- plugin with caution.
-
- Additionally, this and the API may break... consider it pre-alpha.
- There's also a known issue that the OAuth client doesn't do
- refresh tokens so this might result in issues for users.
-
-The OAuth plugin enables third party web applications to authenticate as one or
-more GNU MediaGoblin users in a safe way in order retrieve, create and update
-content stored on the GNU MediaGoblin instance.
-
-The OAuth plugin is based on the `oauth v2.25 draft`_ and is pointing by using
-the ``oauthlib.oauth2.draft25.WebApplicationClient`` from oauthlib_ to a
-mediagoblin instance and building the OAuth 2 provider logic around the client.
-
-There are surely some aspects of the OAuth v2.25 draft that haven't made it
-into this plugin due to the technique used to develop it.
-
-.. _`oauth v2.25 draft`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25
-.. _oauthlib: http://pypi.python.org/pypi/oauthlib
-
-
-Set up the OAuth plugin
-=======================
-
-1. Add the following to your MediaGoblin .ini file in the ``[plugins]`` section::
-
- [[mediagoblin.plugins.oauth]]
-
-2. Run::
-
- gmg dbupdate
-
- in order to create and apply migrations to any database tables that the
- plugin requires.
-
-.. note::
- This only enables the OAuth plugin. To be able to let clients fetch data
- from the MediaGoblin instance you should also enable the API plugin or some
- other plugin that supports authenticating with OAuth credentials.
-
-
-Authenticate against GNU MediaGoblin
-====================================
-
-.. note::
- As mentioned in `capabilities`_ GNU MediaGoblin currently only supports the
- `Authorization Code Grant`_ procedure for obtaining an OAuth access token.
-
-Authorization Code Grant
-------------------------
-
-.. note::
- As mentioned in `incapabilities`_ GNU MediaGoblin currently does not
- support `client registration`_
-
-The `authorization code grant`_ works in the following way:
-
-`Definitions`
-
- Authorization server
- The GNU MediaGoblin instance
- Resource server
- Also the GNU MediaGoblin instance ;)
- Client
- The web application intended to use the data
- Redirect uri
- An URI pointing to a page controlled by the *client*
- Resource owner
- The GNU MediaGoblin user who's resources the client requests access to
- User agent
- Commonly the GNU MediaGoblin user's web browser
- Authorization code
- An intermediate token that is exchanged for an *access token*
- Access token
- A secret token that the *client* uses to authenticate itself agains the
- *resource server* as a specific *resource owner*.
-
-
-Brief description of the procedure
-++++++++++++++++++++++++++++++++++
-
-1. The *client* requests an *authorization code* from the *authorization
- server* by redirecting the *user agent* to the `Authorization Endpoint`_.
- Which parameters should be included in the redirect are covered later in
- this document.
-2. The *authorization server* authenticates the *resource owner* and redirects
- the *user agent* back to the *redirect uri* (covered later in this
- document).
-3. The *client* receives the request from the *user agent*, attached is the
- *authorization code*.
-4. The *client* requests an *access token* from the *authorization server*
-5. \?\?\?\?\?
-6. Profit!
-
-
-Detailed description of the procedure
-+++++++++++++++++++++++++++++++++++++
-
-TBD, in the meantime here is a proof-of-concept GNU MediaGoblin client:
-
-https://github.com/jwandborg/omgmg/
-
-and here are some detailed descriptions from other OAuth 2
-providers:
-
-- https://developers.google.com/accounts/docs/OAuth2WebServer
-- https://developers.facebook.com/docs/authentication/server-side/
-
-and if you're unsure about anything, there's the `OAuth v2.25 draft
-<http://tools.ietf.org/html/draft-ietf-oauth-v2-25>`_, the `OAuth plugin
-source code
-<http://gitorious.org/mediagoblin/mediagoblin/trees/master/mediagoblin/plugins/oauth>`_
-and the `#mediagoblin IRC channel <http://mediagoblin.org/pages/join.html#irc>`_.
-
-
-Capabilities
-============
-
-- `Authorization endpoint`_ - Located at ``/oauth/authorize``
-- `Token endpoint`_ - Located at ``/oauth/access_token``
-- `Authorization Code Grant`_
-- `Client Registration`_
-
-.. _`Authorization endpoint`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-3.1
-.. _`Token endpoint`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-3.2
-.. _`Authorization Code Grant`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-4.1
-.. _`Client Registration`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-2
-
-Incapabilities
-==============
-
-- Only `bearer tokens`_ are issued.
-- `Implicit Grant`_
-- `Force TLS for token endpoint`_ - This one is up the the siteadmin
-- Authorization `scope`_ and `state`
-- ...
-
-.. _`bearer tokens`: http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer-08
-.. _`scope`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-3.3
-.. _`Implicit Grant`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-4.2
-.. _`Force TLS for token endpoint`: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-3.2
diff --git a/mediagoblin/plugins/oauth/__init__.py b/mediagoblin/plugins/oauth/__init__.py
deleted file mode 100644
index 82c1f380..00000000
--- a/mediagoblin/plugins/oauth/__init__.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import os
-import logging
-
-from mediagoblin.tools import pluginapi
-from mediagoblin.plugins.oauth.models import OAuthToken, OAuthClient, \
- OAuthUserClient
-from mediagoblin.plugins.api.tools import Auth
-
-_log = logging.getLogger(__name__)
-
-PLUGIN_DIR = os.path.dirname(__file__)
-
-
-def setup_plugin():
- config = pluginapi.get_config('mediagoblin.plugins.oauth')
-
- _log.info('Setting up OAuth...')
- _log.debug('OAuth config: {0}'.format(config))
-
- routes = [
- ('mediagoblin.plugins.oauth.authorize',
- '/oauth-2/authorize',
- 'mediagoblin.plugins.oauth.views:authorize'),
- ('mediagoblin.plugins.oauth.authorize_client',
- '/oauth-2/client/authorize',
- 'mediagoblin.plugins.oauth.views:authorize_client'),
- ('mediagoblin.plugins.oauth.access_token',
- '/oauth-2/access_token',
- 'mediagoblin.plugins.oauth.views:access_token'),
- ('mediagoblin.plugins.oauth.list_connections',
- '/oauth-2/client/connections',
- 'mediagoblin.plugins.oauth.views:list_connections'),
- ('mediagoblin.plugins.oauth.register_client',
- '/oauth-2/client/register',
- 'mediagoblin.plugins.oauth.views:register_client'),
- ('mediagoblin.plugins.oauth.list_clients',
- '/oauth-2/client/list',
- 'mediagoblin.plugins.oauth.views:list_clients')]
-
- pluginapi.register_routes(routes)
- pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates'))
-
-
-class OAuthAuth(Auth):
- def trigger(self, request):
- if 'access_token' in request.GET:
- return True
-
- return False
-
- def __call__(self, request, *args, **kw):
- self.errors = []
- # TODO: Add suport for client credentials authorization
- client_id = request.GET.get('client_id') # TODO: Not used
- client_secret = request.GET.get('client_secret') # TODO: Not used
- access_token = request.GET.get('access_token')
-
- _log.debug('Authorizing request {0}'.format(request.url))
-
- if access_token:
- token = OAuthToken.query.filter(OAuthToken.token == access_token)\
- .first()
-
- if not token:
- self.errors.append('Invalid access token')
- return False
-
- _log.debug('Access token: {0}'.format(token))
- _log.debug('Client: {0}'.format(token.client))
-
- relation = OAuthUserClient.query.filter(
- (OAuthUserClient.user == token.user)
- & (OAuthUserClient.client == token.client)
- & (OAuthUserClient.state == u'approved')).first()
-
- _log.debug('Relation: {0}'.format(relation))
-
- if not relation:
- self.errors.append(
- u'Client has not been approved by the resource owner')
- return False
-
- request.user = token.user
- return True
-
- self.errors.append(u'No access_token specified')
-
- return False
-
-hooks = {
- 'setup': setup_plugin,
- 'auth': OAuthAuth()
- }
diff --git a/mediagoblin/plugins/oauth/forms.py b/mediagoblin/plugins/oauth/forms.py
deleted file mode 100644
index ddf4d390..00000000
--- a/mediagoblin/plugins/oauth/forms.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import wtforms
-
-from urlparse import urlparse
-
-from mediagoblin.tools.extlib.wtf_html5 import URLField
-from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
-
-
-class AuthorizationForm(wtforms.Form):
- client_id = wtforms.HiddenField(u'',
- validators=[wtforms.validators.InputRequired()])
- next = wtforms.HiddenField(u'', validators=[wtforms.validators.InputRequired()])
- allow = wtforms.SubmitField(_(u'Allow'))
- deny = wtforms.SubmitField(_(u'Deny'))
-
-
-class ClientRegistrationForm(wtforms.Form):
- name = wtforms.TextField(_('Name'), [wtforms.validators.InputRequired()],
- description=_('The name of the OAuth client'))
- description = wtforms.TextAreaField(_('Description'),
- [wtforms.validators.Length(min=0, max=500)],
- description=_('''This will be visible to users allowing your
- application to authenticate as them.'''))
- type = wtforms.SelectField(_('Type'),
- [wtforms.validators.InputRequired()],
- choices=[
- ('confidential', 'Confidential'),
- ('public', 'Public')],
- description=_('''<strong>Confidential</strong> - The client can
- make requests to the GNU MediaGoblin instance that can not be
- intercepted by the user agent (e.g. server-side client).<br />
- <strong>Public</strong> - The client can't make confidential
- requests to the GNU MediaGoblin instance (e.g. client-side
- JavaScript client).'''))
-
- redirect_uri = URLField(_('Redirect URI'),
- [wtforms.validators.Optional(), wtforms.validators.URL()],
- description=_('''The redirect URI for the applications, this field
- is <strong>required</strong> for public clients.'''))
-
- def __init__(self, *args, **kw):
- wtforms.Form.__init__(self, *args, **kw)
-
- def validate(self):
- if not wtforms.Form.validate(self):
- return False
-
- if self.type.data == 'public' and not self.redirect_uri.data:
- self.redirect_uri.errors.append(
- _('This field is required for public clients'))
- return False
-
- return True
diff --git a/mediagoblin/plugins/oauth/migrations.py b/mediagoblin/plugins/oauth/migrations.py
deleted file mode 100644
index d7b89da3..00000000
--- a/mediagoblin/plugins/oauth/migrations.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-from datetime import datetime, timedelta
-from sqlalchemy import (MetaData, Table, Column,
- Integer, Unicode, Enum, DateTime, ForeignKey)
-from sqlalchemy.ext.declarative import declarative_base
-
-from mediagoblin.db.migration_tools import RegisterMigration
-from mediagoblin.db.models import User
-
-
-MIGRATIONS = {}
-
-
-class OAuthClient_v0(declarative_base()):
- __tablename__ = 'oauth__client'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
-
- name = Column(Unicode)
- description = Column(Unicode)
-
- identifier = Column(Unicode, unique=True, index=True)
- secret = Column(Unicode, index=True)
-
- owner_id = Column(Integer, ForeignKey(User.id))
- redirect_uri = Column(Unicode)
-
- type = Column(Enum(
- u'confidential',
- u'public',
- name=u'oauth__client_type'))
-
-
-class OAuthUserClient_v0(declarative_base()):
- __tablename__ = 'oauth__user_client'
- id = Column(Integer, primary_key=True)
-
- user_id = Column(Integer, ForeignKey(User.id))
- client_id = Column(Integer, ForeignKey(OAuthClient_v0.id))
-
- state = Column(Enum(
- u'approved',
- u'rejected',
- name=u'oauth__relation_state'))
-
-
-class OAuthToken_v0(declarative_base()):
- __tablename__ = 'oauth__tokens'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
- expires = Column(DateTime, nullable=False,
- default=lambda: datetime.now() + timedelta(days=30))
- token = Column(Unicode, index=True)
- refresh_token = Column(Unicode, index=True)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False,
- index=True)
-
- client_id = Column(Integer, ForeignKey(OAuthClient_v0.id), nullable=False)
-
- def __repr__(self):
- return '<{0} #{1} expires {2} [{3}, {4}]>'.format(
- self.__class__.__name__,
- self.id,
- self.expires.isoformat(),
- self.user,
- self.client)
-
-
-class OAuthCode_v0(declarative_base()):
- __tablename__ = 'oauth__codes'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
- expires = Column(DateTime, nullable=False,
- default=lambda: datetime.now() + timedelta(minutes=5))
- code = Column(Unicode, index=True)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False,
- index=True)
-
- client_id = Column(Integer, ForeignKey(OAuthClient_v0.id), nullable=False)
-
-
-class OAuthRefreshToken_v0(declarative_base()):
- __tablename__ = 'oauth__refresh_tokens'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
-
- token = Column(Unicode, index=True)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False)
-
- # XXX: Is it OK to use OAuthClient_v0.id in this way?
- client_id = Column(Integer, ForeignKey(OAuthClient_v0.id), nullable=False)
-
-
-@RegisterMigration(1, MIGRATIONS)
-def remove_and_replace_token_and_code(db):
- metadata = MetaData(bind=db.bind)
-
- token_table = Table('oauth__tokens', metadata, autoload=True,
- autoload_with=db.bind)
-
- token_table.drop()
-
- code_table = Table('oauth__codes', metadata, autoload=True,
- autoload_with=db.bind)
-
- code_table.drop()
-
- OAuthClient_v0.__table__.create(db.bind)
- OAuthUserClient_v0.__table__.create(db.bind)
- OAuthToken_v0.__table__.create(db.bind)
- OAuthCode_v0.__table__.create(db.bind)
-
- db.commit()
-
-
-@RegisterMigration(2, MIGRATIONS)
-def remove_refresh_token_field(db):
- metadata = MetaData(bind=db.bind)
-
- token_table = Table('oauth__tokens', metadata, autoload=True,
- autoload_with=db.bind)
-
- refresh_token = token_table.columns['refresh_token']
-
- refresh_token.drop()
- db.commit()
-
-@RegisterMigration(3, MIGRATIONS)
-def create_refresh_token_table(db):
- OAuthRefreshToken_v0.__table__.create(db.bind)
-
- db.commit()
diff --git a/mediagoblin/plugins/oauth/models.py b/mediagoblin/plugins/oauth/models.py
deleted file mode 100644
index 439424d3..00000000
--- a/mediagoblin/plugins/oauth/models.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-from datetime import datetime, timedelta
-
-
-from sqlalchemy import (
- Column, Unicode, Integer, DateTime, ForeignKey, Enum)
-from sqlalchemy.orm import relationship, backref
-from mediagoblin.db.base import Base
-from mediagoblin.db.models import User
-from mediagoblin.plugins.oauth.tools import generate_identifier, \
- generate_secret, generate_token, generate_code, generate_refresh_token
-
-# Don't remove this, I *think* it applies sqlalchemy-migrate functionality onto
-# the models.
-from migrate import changeset
-
-
-class OAuthClient(Base):
- __tablename__ = 'oauth__client'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
-
- name = Column(Unicode)
- description = Column(Unicode)
-
- identifier = Column(Unicode, unique=True, index=True,
- default=generate_identifier)
- secret = Column(Unicode, index=True, default=generate_secret)
-
- owner_id = Column(Integer, ForeignKey(User.id))
- owner = relationship(
- User,
- backref=backref('registered_clients', cascade='all, delete-orphan'))
-
- redirect_uri = Column(Unicode)
-
- type = Column(Enum(
- u'confidential',
- u'public',
- name=u'oauth__client_type'))
-
- def update_secret(self):
- self.secret = generate_secret()
-
- def __repr__(self):
- return '<{0} {1}:{2} ({3})>'.format(
- self.__class__.__name__,
- self.id,
- self.name.encode('ascii', 'replace'),
- self.owner.username.encode('ascii', 'replace'))
-
-
-class OAuthUserClient(Base):
- __tablename__ = 'oauth__user_client'
- id = Column(Integer, primary_key=True)
-
- user_id = Column(Integer, ForeignKey(User.id))
- user = relationship(
- User,
- backref=backref('oauth_client_relations',
- cascade='all, delete-orphan'))
-
- client_id = Column(Integer, ForeignKey(OAuthClient.id))
- client = relationship(
- OAuthClient,
- backref=backref('oauth_user_relations', cascade='all, delete-orphan'))
-
- state = Column(Enum(
- u'approved',
- u'rejected',
- name=u'oauth__relation_state'))
-
- def __repr__(self):
- return '<{0} #{1} {2} [{3}, {4}]>'.format(
- self.__class__.__name__,
- self.id,
- self.state.encode('ascii', 'replace'),
- self.user,
- self.client)
-
-
-class OAuthToken(Base):
- __tablename__ = 'oauth__tokens'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
- expires = Column(DateTime, nullable=False,
- default=lambda: datetime.now() + timedelta(days=30))
- token = Column(Unicode, index=True, default=generate_token)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False,
- index=True)
- user = relationship(
- User,
- backref=backref('oauth_tokens', cascade='all, delete-orphan'))
-
- client_id = Column(Integer, ForeignKey(OAuthClient.id), nullable=False)
- client = relationship(
- OAuthClient,
- backref=backref('oauth_tokens', cascade='all, delete-orphan'))
-
- def __repr__(self):
- return '<{0} #{1} expires {2} [{3}, {4}]>'.format(
- self.__class__.__name__,
- self.id,
- self.expires.isoformat(),
- self.user,
- self.client)
-
-class OAuthRefreshToken(Base):
- __tablename__ = 'oauth__refresh_tokens'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
-
- token = Column(Unicode, index=True,
- default=generate_refresh_token)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False)
-
- user = relationship(User, backref=backref('oauth_refresh_tokens',
- cascade='all, delete-orphan'))
-
- client_id = Column(Integer, ForeignKey(OAuthClient.id), nullable=False)
- client = relationship(OAuthClient,
- backref=backref(
- 'oauth_refresh_tokens',
- cascade='all, delete-orphan'))
-
- def __repr__(self):
- return '<{0} #{1} [{3}, {4}]>'.format(
- self.__class__.__name__,
- self.id,
- self.user,
- self.client)
-
-
-class OAuthCode(Base):
- __tablename__ = 'oauth__codes'
-
- id = Column(Integer, primary_key=True)
- created = Column(DateTime, nullable=False,
- default=datetime.now)
- expires = Column(DateTime, nullable=False,
- default=lambda: datetime.now() + timedelta(minutes=5))
- code = Column(Unicode, index=True, default=generate_code)
-
- user_id = Column(Integer, ForeignKey(User.id), nullable=False,
- index=True)
- user = relationship(User, backref=backref('oauth_codes',
- cascade='all, delete-orphan'))
-
- client_id = Column(Integer, ForeignKey(OAuthClient.id), nullable=False)
- client = relationship(OAuthClient, backref=backref(
- 'oauth_codes',
- cascade='all, delete-orphan'))
-
- def __repr__(self):
- return '<{0} #{1} expires {2} [{3}, {4}]>'.format(
- self.__class__.__name__,
- self.id,
- self.expires.isoformat(),
- self.user,
- self.client)
-
-
-MODELS = [
- OAuthToken,
- OAuthRefreshToken,
- OAuthCode,
- OAuthClient,
- OAuthUserClient]
diff --git a/mediagoblin/plugins/oauth/templates/oauth/client/list.html b/mediagoblin/plugins/oauth/templates/oauth/client/list.html
deleted file mode 100644
index 21024bb7..00000000
--- a/mediagoblin/plugins/oauth/templates/oauth/client/list.html
+++ /dev/null
@@ -1,45 +0,0 @@
-{#
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#}
-{% extends "mediagoblin/base.html" %}
-{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
-
-{% block mediagoblin_content %}
-<h1>{% trans %}Your OAuth clients{% endtrans %}</h1>
-{% if clients %}
-<ul>
- {% for client in clients %}
- <li>{{ client.name }}
- <dl>
- <dt>Type</dt>
- <dd>{{ client.type }}</dd>
- <dt>Description</dt>
- <dd>{{ client.description }}</dd>
- <dt>Identifier</dt>
- <dd>{{ client.identifier }}</dd>
- <dt>Secret</dt>
- <dd>{{ client.secret }}</dd>
- <dt>Redirect URI<dt>
- <dd>{{ client.redirect_uri }}</dd>
- </dl>
- </li>
- {% endfor %}
-</ul>
-{% else %}
-<p>You don't have any clients yet. <a href="{{ request.urlgen('mediagoblin.plugins.oauth.register_client') }}">Add one</a>.</p>
-{% endif %}
-{% endblock %}
diff --git a/mediagoblin/plugins/oauth/tools.py b/mediagoblin/plugins/oauth/tools.py
deleted file mode 100644
index af0a3305..00000000
--- a/mediagoblin/plugins/oauth/tools.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import uuid
-
-from random import getrandbits
-
-from datetime import datetime
-
-from functools import wraps
-
-from mediagoblin.tools.response import json_response
-
-
-def require_client_auth(controller):
- '''
- View decorator
-
- - Requires the presence of ``?client_id``
- '''
- # Avoid circular import
- from mediagoblin.plugins.oauth.models import OAuthClient
-
- @wraps(controller)
- def wrapper(request, *args, **kw):
- if not request.GET.get('client_id'):
- return json_response({
- 'status': 400,
- 'errors': [u'No client identifier in URL']},
- _disable_cors=True)
-
- client = OAuthClient.query.filter(
- OAuthClient.identifier == request.GET.get('client_id')).first()
-
- if not client:
- return json_response({
- 'status': 400,
- 'errors': [u'No such client identifier']},
- _disable_cors=True)
-
- return controller(request, client)
-
- return wrapper
-
-
-def create_token(client, user):
- '''
- Create an OAuthToken and an OAuthRefreshToken entry in the database
-
- Returns the data structure expected by the OAuth clients.
- '''
- from mediagoblin.plugins.oauth.models import OAuthToken, OAuthRefreshToken
-
- token = OAuthToken()
- token.user = user
- token.client = client
- token.save()
-
- refresh_token = OAuthRefreshToken()
- refresh_token.user = user
- refresh_token.client = client
- refresh_token.save()
-
- # expire time of token in full seconds
- # timedelta.total_seconds is python >= 2.7 or we would use that
- td = token.expires - datetime.now()
- exp_in = 86400*td.days + td.seconds # just ignore µsec
-
- return {'access_token': token.token, 'token_type': 'bearer',
- 'refresh_token': refresh_token.token, 'expires_in': exp_in}
-
-
-def generate_identifier():
- ''' Generates a ``uuid.uuid4()`` '''
- return unicode(uuid.uuid4())
-
-
-def generate_token():
- ''' Uses generate_identifier '''
- return generate_identifier()
-
-
-def generate_refresh_token():
- ''' Uses generate_identifier '''
- return generate_identifier()
-
-
-def generate_code():
- ''' Uses generate_identifier '''
- return generate_identifier()
-
-
-def generate_secret():
- '''
- Generate a long string of pseudo-random characters
- '''
- # XXX: We might not want it to use bcrypt, since bcrypt takes its time to
- # generate the result.
- return unicode(getrandbits(192))
-
diff --git a/mediagoblin/plugins/oauth/views.py b/mediagoblin/plugins/oauth/views.py
deleted file mode 100644
index de637d6b..00000000
--- a/mediagoblin/plugins/oauth/views.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# -*- coding: utf-8 -*-
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import logging
-
-from urllib import urlencode
-
-from werkzeug.exceptions import BadRequest
-
-from mediagoblin.tools.response import render_to_response, redirect, json_response
-from mediagoblin.decorators import require_active_login
-from mediagoblin.messages import add_message, SUCCESS
-from mediagoblin.tools.translate import pass_to_ugettext as _
-from mediagoblin.plugins.oauth.models import OAuthCode, OAuthClient, \
- OAuthUserClient, OAuthRefreshToken
-from mediagoblin.plugins.oauth.forms import ClientRegistrationForm, \
- AuthorizationForm
-from mediagoblin.plugins.oauth.tools import require_client_auth, \
- create_token
-
-_log = logging.getLogger(__name__)
-
-
-@require_active_login
-def register_client(request):
- '''
- Register an OAuth client
- '''
- form = ClientRegistrationForm(request.form)
-
- if request.method == 'POST' and form.validate():
- client = OAuthClient()
- client.name = unicode(form.name.data)
- client.description = unicode(form.description.data)
- client.type = unicode(form.type.data)
- client.owner_id = request.user.id
- client.redirect_uri = unicode(form.redirect_uri.data)
-
- client.save()
-
- add_message(request, SUCCESS, _('The client {0} has been registered!')\
- .format(
- client.name))
-
- return redirect(request, 'mediagoblin.plugins.oauth.list_clients')
-
- return render_to_response(
- request,
- 'oauth/client/register.html',
- {'form': form})
-
-
-@require_active_login
-def list_clients(request):
- clients = request.db.OAuthClient.query.filter(
- OAuthClient.owner_id == request.user.id).all()
- return render_to_response(request, 'oauth/client/list.html',
- {'clients': clients})
-
-
-@require_active_login
-def list_connections(request):
- connections = OAuthUserClient.query.filter(
- OAuthUserClient.user == request.user).all()
- return render_to_response(request, 'oauth/client/connections.html',
- {'connections': connections})
-
-
-@require_active_login
-def authorize_client(request):
- form = AuthorizationForm(request.form)
-
- client = OAuthClient.query.filter(OAuthClient.id ==
- form.client_id.data).first()
-
- if not client:
- _log.error('No such client id as received from client authorization \
-form.')
- raise BadRequest()
-
- if form.validate():
- relation = OAuthUserClient()
- relation.user_id = request.user.id
- relation.client_id = form.client_id.data
- if form.allow.data:
- relation.state = u'approved'
- elif form.deny.data:
- relation.state = u'rejected'
- else:
- raise BadRequest()
-
- relation.save()
-
- return redirect(request, location=form.next.data)
-
- return render_to_response(
- request,
- 'oauth/authorize.html',
- {'form': form,
- 'client': client})
-
-
-@require_client_auth
-@require_active_login
-def authorize(request, client):
- # TODO: Get rid of the JSON responses in this view, it's called by the
- # user-agent, not the client.
- user_client_relation = OAuthUserClient.query.filter(
- (OAuthUserClient.user == request.user)
- & (OAuthUserClient.client == client))
-
- if user_client_relation.filter(OAuthUserClient.state ==
- u'approved').count():
- redirect_uri = None
-
- if client.type == u'public':
- if not client.redirect_uri:
- return json_response({
- 'status': 400,
- 'errors':
- [u'Public clients should have a redirect_uri pre-set.']},
- _disable_cors=True)
-
- redirect_uri = client.redirect_uri
-
- if client.type == u'confidential':
- redirect_uri = request.GET.get('redirect_uri', client.redirect_uri)
- if not redirect_uri:
- return json_response({
- 'status': 400,
- 'errors': [u'No redirect_uri supplied!']},
- _disable_cors=True)
-
- code = OAuthCode()
- code.user = request.user
- code.client = client
- code.save()
-
- redirect_uri = ''.join([
- redirect_uri,
- '?',
- urlencode({'code': code.code})])
-
- _log.debug('Redirecting to {0}'.format(redirect_uri))
-
- return redirect(request, location=redirect_uri)
- else:
- # Show prompt to allow client to access data
- # - on accept: send the user agent back to the redirect_uri with the
- # code parameter
- # - on deny: send the user agent back to the redirect uri with error
- # information
- form = AuthorizationForm(request.form)
- form.client_id.data = client.id
- form.next.data = request.url
- return render_to_response(
- request,
- 'oauth/authorize.html',
- {'form': form,
- 'client': client})
-
-
-def access_token(request):
- '''
- Access token endpoint provides access tokens to any clients that have the
- right grants/credentials
- '''
-
- client = None
- user = None
-
- if request.GET.get('code'):
- # Validate the code arg, then get the client object from the db.
- code = OAuthCode.query.filter(OAuthCode.code ==
- request.GET.get('code')).first()
-
- if not code:
- return json_response({
- 'error': 'invalid_request',
- 'error_description':
- 'Invalid code.'})
-
- client = code.client
- user = code.user
-
- elif request.args.get('refresh_token'):
- # Validate a refresh token, then get the client object from the db.
- refresh_token = OAuthRefreshToken.query.filter(
- OAuthRefreshToken.token ==
- request.args.get('refresh_token')).first()
-
- if not refresh_token:
- return json_response({
- 'error': 'invalid_request',
- 'error_description':
- 'Invalid refresh token.'})
-
- client = refresh_token.client
- user = refresh_token.user
-
- if client:
- client_identifier = request.GET.get('client_id')
-
- if not client_identifier:
- return json_response({
- 'error': 'invalid_request',
- 'error_description':
- 'Missing client_id in request.'})
-
- if not client_identifier == client.identifier:
- return json_response({
- 'error': 'invalid_client',
- 'error_description':
- 'Mismatching client credentials.'})
-
- if client.type == u'confidential':
- client_secret = request.GET.get('client_secret')
-
- if not client_secret:
- return json_response({
- 'error': 'invalid_request',
- 'error_description':
- 'Missing client_secret in request.'})
-
- if not client_secret == client.secret:
- return json_response({
- 'error': 'invalid_client',
- 'error_description':
- 'Mismatching client credentials.'})
-
-
- access_token_data = create_token(client, user)
-
- return json_response(access_token_data, _disable_cors=True)
-
- return json_response({
- 'error': 'invalid_request',
- 'error_description':
- 'Missing `code` or `refresh_token` parameter in request.'})
diff --git a/mediagoblin/plugins/openid/README.rst b/mediagoblin/plugins/openid/README.rst
index 870a2b58..1a777336 100644
--- a/mediagoblin/plugins/openid/README.rst
+++ b/mediagoblin/plugins/openid/README.rst
@@ -1,23 +1,23 @@
.. _openid-chapter:
===================
- openid plugin
+ OpenID plugin
===================
-The openid plugin allows user to login to your GNU Mediagoblin instance using
-their openid url.
+The OpenID plugin allows user to login to your GNU MediaGoblin instance using
+their OpenID URL.
This plugin can be enabled alongside :ref:`basic_auth-chapter` and
:ref:`persona-chapter`.
.. note::
- When :ref:`basic_auth-chapter` is enabled alongside this openid plugin, and
- a user creates an account using their openid. If they would like to add a
+ When :ref:`basic_auth-chapter` is enabled alongside this OpenID plugin, and
+ a user creates an account using their OpenID. If they would like to add a
password to their account, they can use the forgot password feature to do
so.
-Set up the openid plugin
+Set up the OpenID plugin
============================
1. Install the ``python-openid`` package.
diff --git a/mediagoblin/plugins/openid/__init__.py b/mediagoblin/plugins/openid/__init__.py
index ca17a7e8..b26087a2 100644
--- a/mediagoblin/plugins/openid/__init__.py
+++ b/mediagoblin/plugins/openid/__init__.py
@@ -19,7 +19,7 @@ import uuid
from sqlalchemy import or_
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.openid.models import OpenIDUserURL
from mediagoblin.tools import pluginapi
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
@@ -67,8 +67,8 @@ def create_user(register_form):
username = register_form.username.data
user = User.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
if not user:
diff --git a/mediagoblin/plugins/openid/forms.py b/mediagoblin/plugins/openid/forms.py
index d47369dc..6dfde0c8 100644
--- a/mediagoblin/plugins/openid/forms.py
+++ b/mediagoblin/plugins/openid/forms.py
@@ -23,18 +23,18 @@ class RegistrationForm(wtforms.Form):
openid = wtforms.HiddenField(
'',
[wtforms.validators.InputRequired()])
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_email=False)])
- email = wtforms.TextField(
+ email = wtforms.StringField(
_('Email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
class LoginForm(wtforms.Form):
- openid = wtforms.TextField(
+ openid = wtforms.StringField(
_('OpenID'),
[wtforms.validators.InputRequired(),
# Can openid's only be urls?
diff --git a/mediagoblin/plugins/openid/migrations/071abb33d1da_openid_plugin_initial_migration.py b/mediagoblin/plugins/openid/migrations/071abb33d1da_openid_plugin_initial_migration.py
new file mode 100644
index 00000000..b6b97da9
--- /dev/null
+++ b/mediagoblin/plugins/openid/migrations/071abb33d1da_openid_plugin_initial_migration.py
@@ -0,0 +1,54 @@
+"""OpenID plugin initial migration
+
+Revision ID: 071abb33d1da
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:32:58.191980
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '071abb33d1da'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('openid_plugin',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table('openid__association'):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'openid__association',
+ sa.Column('server_url', sa.Unicode(), nullable=False),
+ sa.Column('handle', sa.Unicode(), nullable=False),
+ sa.Column('secret', sa.Unicode(), nullable=True),
+ sa.Column('issued', sa.Integer(), nullable=True),
+ sa.Column('lifetime', sa.Integer(), nullable=True),
+ sa.Column('assoc_type', sa.Unicode(), nullable=True),
+ sa.PrimaryKeyConstraint('server_url', 'handle'))
+
+ op.create_table(
+ 'openid__nonce',
+ sa.Column('server_url', sa.Unicode(), nullable=False),
+ sa.Column('timestamp', sa.Integer(), nullable=False),
+ sa.Column('salt', sa.Unicode(), nullable=False),
+ sa.PrimaryKeyConstraint('server_url', 'timestamp', 'salt'))
+
+ op.create_table(
+ 'openid__user_urls',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('openid_url', sa.Unicode(), nullable=False),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['user_id'], ['core__users.id'], ),
+ sa.PrimaryKeyConstraint('id'))
+
+
+def downgrade():
+ op.drop_table('openid__user_urls')
+ op.drop_table('openid__nonce')
+ op.drop_table('openid__association')
diff --git a/mediagoblin/plugins/openid/store.py b/mediagoblin/plugins/openid/store.py
index 8f9a7012..24726814 100644
--- a/mediagoblin/plugins/openid/store.py
+++ b/mediagoblin/plugins/openid/store.py
@@ -16,6 +16,8 @@
import base64
import time
+import six
+
from openid.association import Association as OIDAssociation
from openid.store.interface import OpenIDStore
from openid.store import nonce
@@ -34,12 +36,12 @@ class SQLAlchemyOpenIDStore(OpenIDStore):
if not assoc:
assoc = Association()
- assoc.server_url = unicode(server_url)
+ assoc.server_url = six.text_type(server_url)
assoc.handle = association.handle
# django uses base64 encoding, python-openid uses a blob field for
# secret
- assoc.secret = unicode(base64.encodestring(association.secret))
+ assoc.secret = six.text_type(base64.encodestring(association.secret))
assoc.issued = association.issued
assoc.lifetime = association.lifetime
assoc.assoc_type = association.assoc_type
diff --git a/mediagoblin/plugins/openid/views.py b/mediagoblin/plugins/openid/views.py
index bb2de7ab..71f444fa 100644
--- a/mediagoblin/plugins/openid/views.py
+++ b/mediagoblin/plugins/openid/views.py
@@ -13,6 +13,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import six
+
from openid.consumer import consumer
from openid.consumer.discover import DiscoveryFailure
from openid.extensions.sreg import SRegRequest, SRegResponse
@@ -186,7 +189,7 @@ def finish_login(request):
if user:
# Set up login in session
- request.session['user_id'] = unicode(user.id)
+ request.session['user_id'] = six.text_type(user.id)
request.session.save()
if request.session.get('next'):
diff --git a/mediagoblin/plugins/persona/__init__.py b/mediagoblin/plugins/persona/__init__.py
index 700c18e2..8fab726a 100644
--- a/mediagoblin/plugins/persona/__init__.py
+++ b/mediagoblin/plugins/persona/__init__.py
@@ -19,7 +19,7 @@ import os
from sqlalchemy import or_
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.persona.models import PersonaUserEmails
from mediagoblin.tools import pluginapi
from mediagoblin.tools.staticdirect import PluginStatic
@@ -60,8 +60,8 @@ def create_user(register_form):
username = register_form.username.data
user = User.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
if not user:
diff --git a/mediagoblin/plugins/persona/forms.py b/mediagoblin/plugins/persona/forms.py
index 7d632344..f74d97fa 100644
--- a/mediagoblin/plugins/persona/forms.py
+++ b/mediagoblin/plugins/persona/forms.py
@@ -20,11 +20,11 @@ from mediagoblin.auth.tools import normalize_user_or_email_field
class RegistrationForm(wtforms.Form):
- username = wtforms.TextField(
+ username = wtforms.StringField(
_('Username'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_email=False)])
- email = wtforms.TextField(
+ email = wtforms.StringField(
_('Email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
@@ -35,7 +35,7 @@ class RegistrationForm(wtforms.Form):
class EditForm(wtforms.Form):
- email = wtforms.TextField(
+ email = wtforms.StringField(
_('Email address'),
[wtforms.validators.InputRequired(),
normalize_user_or_email_field(allow_user=False)])
diff --git a/mediagoblin/plugins/persona/migrations/c7d4840a5592_persona_plugin_initial_migration.py b/mediagoblin/plugins/persona/migrations/c7d4840a5592_persona_plugin_initial_migration.py
new file mode 100644
index 00000000..0c40893a
--- /dev/null
+++ b/mediagoblin/plugins/persona/migrations/c7d4840a5592_persona_plugin_initial_migration.py
@@ -0,0 +1,35 @@
+"""Persona plugin initial migration
+
+Revision ID: c7d4840a5592
+Revises: 52bf0ccbedc1
+Create Date: 2016-03-12 23:30:33.624390
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'c7d4840a5592'
+down_revision = '52bf0ccbedc1'
+branch_labels = ('persona_plugin',)
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ if op.get_bind().engine.has_table('persona__user_emails'):
+ # Skip; this has already been instantiated
+ # (probably via sqlalchemy-migrate)
+ return
+
+ op.create_table(
+ 'persona__user_emails',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('persona_email', sa.Unicode(), nullable=False),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['user_id'], ['core__users.id'], ),
+ sa.PrimaryKeyConstraint('id'))
+
+
+def downgrade():
+ op.drop_table('persona__user_emails')
diff --git a/mediagoblin/plugins/persona/views.py b/mediagoblin/plugins/persona/views.py
index 1bba3b8c..41d38353 100644
--- a/mediagoblin/plugins/persona/views.py
+++ b/mediagoblin/plugins/persona/views.py
@@ -17,6 +17,8 @@ import json
import logging
import requests
+import six
+
from werkzeug.exceptions import BadRequest
from mediagoblin import messages, mg_globals
@@ -63,7 +65,7 @@ def login(request):
user = query.user if query else None
if user:
- request.session['user_id'] = unicode(user.id)
+ request.session['user_id'] = six.text_type(user.id)
request.session['persona_login_email'] = email
request.session.save()
diff --git a/mediagoblin/plugins/piwigo/forms.py b/mediagoblin/plugins/piwigo/forms.py
index fd545a3e..b501562b 100644
--- a/mediagoblin/plugins/piwigo/forms.py
+++ b/mediagoblin/plugins/piwigo/forms.py
@@ -20,10 +20,10 @@ import wtforms
class AddSimpleForm(wtforms.Form):
image = wtforms.FileField()
- name = wtforms.TextField(
+ name = wtforms.StringField(
validators=[wtforms.validators.Length(min=0, max=500)])
- comment = wtforms.TextField()
- # tags = wtforms.FieldList(wtforms.TextField())
+ comment = wtforms.StringField()
+ # tags = wtforms.FieldList(wtforms.StringField())
category = wtforms.IntegerField()
level = wtforms.IntegerField()
@@ -32,13 +32,13 @@ _md5_validator = wtforms.validators.Regexp(r"^[0-9a-fA-F]{32}$")
class AddForm(wtforms.Form):
- original_sum = wtforms.TextField(None,
+ original_sum = wtforms.StringField(None,
[_md5_validator,
wtforms.validators.InputRequired()])
- thumbnail_sum = wtforms.TextField(None,
+ thumbnail_sum = wtforms.StringField(None,
[wtforms.validators.Optional(),
_md5_validator])
- file_sum = wtforms.TextField(None, [_md5_validator])
- name = wtforms.TextField()
- date_creation = wtforms.TextField()
- categories = wtforms.TextField()
+ file_sum = wtforms.StringField(None, [_md5_validator])
+ name = wtforms.StringField()
+ date_creation = wtforms.StringField()
+ categories = wtforms.StringField()
diff --git a/mediagoblin/plugins/piwigo/tools.py b/mediagoblin/plugins/piwigo/tools.py
index 484ea531..7b9b7af3 100644
--- a/mediagoblin/plugins/piwigo/tools.py
+++ b/mediagoblin/plugins/piwigo/tools.py
@@ -47,7 +47,7 @@ class PwgNamedArray(list):
def _fill_element_dict(el, data, as_attr=()):
- for k, v in data.iteritems():
+ for k, v in six.iteritems(data):
if k in as_attr:
if not isinstance(v, six.string_types):
v = str(v)
diff --git a/mediagoblin/plugins/piwigo/views.py b/mediagoblin/plugins/piwigo/views.py
index f913a730..30c7ffa2 100644
--- a/mediagoblin/plugins/piwigo/views.py
+++ b/mediagoblin/plugins/piwigo/views.py
@@ -17,6 +17,8 @@
import logging
import re
+import six
+
from werkzeug.exceptions import MethodNotAllowed, BadRequest, NotImplemented
from werkzeug.wrappers import BaseResponse
@@ -80,7 +82,7 @@ def pwg_categories_getList(request):
if request.user:
collections = Collection.query.filter_by(
- get_creator=request.user).order_by(Collection.title)
+ get_actor=request.user).order_by(Collection.title)
for c in collections:
catlist.append({'id': c.id,
@@ -126,21 +128,18 @@ def pwg_images_addSimple(request):
if not check_file_field(request, 'image'):
raise BadRequest()
- upload_limit, max_file_size = get_upload_file_limits(request.user)
-
try:
entry = submit_media(
mg_app=request.app, user=request.user,
submitted_file=request.files['image'],
filename=request.files['image'].filename,
- title=unicode(form.name.data),
- description=unicode(form.comment.data),
- upload_limit=upload_limit, max_file_size=max_file_size)
+ title=six.text_type(form.name.data),
+ description=six.text_type(form.comment.data))
collection_id = form.category.data
if collection_id > 0:
collection = Collection.query.get(collection_id)
- if collection is not None and collection.creator == request.user.id:
+ if collection is not None and collection.actor == request.user.id:
add_media_to_collection(collection, entry, "")
return {
diff --git a/mediagoblin/plugins/processing_info/README.rst b/mediagoblin/plugins/processing_info/README.rst
new file mode 100644
index 00000000..3bacbf50
--- /dev/null
+++ b/mediagoblin/plugins/processing_info/README.rst
@@ -0,0 +1,5 @@
+==============
+ sampleplugin
+==============
+
+A plugin to insert some useful information about processing to templates
diff --git a/mediagoblin/plugins/processing_info/__init__.py b/mediagoblin/plugins/processing_info/__init__.py
new file mode 100644
index 00000000..fb824765
--- /dev/null
+++ b/mediagoblin/plugins/processing_info/__init__.py
@@ -0,0 +1,51 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import logging
+import os
+
+from mediagoblin.tools.pluginapi import get_config
+from mediagoblin.db.models import MediaEntry
+from mediagoblin.tools import pluginapi
+
+_log = logging.getLogger(__name__)
+
+PLUGIN_DIR = os.path.dirname(__file__)
+
+def setup_plugin():
+ pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates'))
+ pluginapi.register_template_hooks(
+ {'header_left': 'mediagoblin/processing_info/header_left.html'})
+ return
+
+def make_stats(context):
+ request = context['request']
+ user = request.user
+ if user:
+ num_queued = MediaEntry.query.filter_by(
+ actor=user.id, state=u'processing').count()
+ context['num_queued'] = num_queued
+ num_failed = MediaEntry.query.filter_by(
+ actor=user.id, state=u'failed').count()
+ context['num_failed'] = num_failed
+ return context
+
+
+hooks = {
+ 'setup': setup_plugin,
+ 'template_context_prerender': make_stats
+ }
diff --git a/mediagoblin/plugins/oauth/templates/oauth/client/register.html b/mediagoblin/plugins/processing_info/templates/mediagoblin/processing_info/header_left.html
index 6fd700d3..1d5e724d 100644
--- a/mediagoblin/plugins/oauth/templates/oauth/client/register.html
+++ b/mediagoblin/plugins/processing_info/templates/mediagoblin/processing_info/header_left.html
@@ -14,21 +14,19 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#}
-{% extends "mediagoblin/base.html" %}
-{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
-
-{% block mediagoblin_content %}
-<form action="{{ request.urlgen('mediagoblin.plugins.oauth.register_client') }}"
- method="POST">
- <div class="form_box_xl">
- <h1>Register OAuth client</h1>
- {{ wtforms_util.render_divs(form) }}
- <div class="form_submit_buttons">
- {{ csrf_token }}
- <input type="submit" value="{% trans %}Add{% endtrans %}"
- class="button_form" />
- </div>
- </div>
-</form>
-{% endblock %}
+#}
+{#This injects some information about entries in processing #}
+{% if request.user and request.user.has_privilege('active') %}
+{% if num_queued is defined and num_queued != 0 %}
+<span class="num_queued status_icon">
+ <a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username, state="processing") }}">&#9203; {{ num_queued }}</a>
+</span>
+{% endif %}
+{% if num_failed is defined and num_failed != 0 %}
+<span class="num_failed status_icon">
+ <a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username, state="failed") }}">&#9785; {{ num_failed }}</a>
+</span>
+{% endif %}
+{% endif %}
diff --git a/mediagoblin/plugins/trim_whitespace/README.rst b/mediagoblin/plugins/trim_whitespace/README.rst
index db9a0c53..d83af06b 100644
--- a/mediagoblin/plugins/trim_whitespace/README.rst
+++ b/mediagoblin/plugins/trim_whitespace/README.rst
@@ -2,7 +2,7 @@
Trim whitespace plugin
=======================
-Mediagoblin templates are written with 80 char limit for better
+MediaGoblin templates are written with 80 char limit for better
readability. However that means that the HTML output is very verbose
containing *lots* of whitespace. This plugin inserts a middleware that
filters out whitespace from the returned HTML in the ``Response()``
diff --git a/mediagoblin/processing/__init__.py b/mediagoblin/processing/__init__.py
index 102fd5de..29345227 100644
--- a/mediagoblin/processing/__init__.py
+++ b/mediagoblin/processing/__init__.py
@@ -24,6 +24,8 @@ except:
import logging
import os
+import six
+
from mediagoblin import mg_globals as mgg
from mediagoblin.db.util import atomic_update
from mediagoblin.db.models import MediaEntry
@@ -46,7 +48,7 @@ class ProgressCallback(object):
def create_pub_filepath(entry, filename):
return mgg.public_store.get_unique_filepath(
['media_entries',
- unicode(entry.id),
+ six.text_type(entry.id),
filename])
@@ -307,8 +309,8 @@ def mark_entry_failed(entry_id, exc):
store extra information that can be useful for users telling them
why their media failed to process.
- Args:
- - entry_id: The id of the media entry
+ :param entry_id: The id of the media entry
+ :param exc: An instance of BaseProcessingFail
"""
# Was this a BaseProcessingFail? In other words, was this a
@@ -319,18 +321,17 @@ def mark_entry_failed(entry_id, exc):
atomic_update(mgg.database.MediaEntry,
{'id': entry_id},
{u'state': u'failed',
- u'fail_error': unicode(exc.exception_path),
+ u'fail_error': six.text_type(exc.exception_path),
u'fail_metadata': exc.metadata})
else:
_log.warn("No idea what happened here, but it failed: %r", exc)
- # Looks like no, so just mark it as failed and don't record a
- # failure_error (we'll assume it wasn't handled) and don't record
- # metadata (in fact overwrite it if somehow it had previous info
- # here)
+ # Looks like no, let's record it so that admin could ask us about the
+ # reason
atomic_update(mgg.database.MediaEntry,
{'id': entry_id},
{u'state': u'failed',
- u'fail_error': None,
+ u'fail_error': u'Unhandled exception: {0}'.format(
+ six.text_type(exc)),
u'fail_metadata': {}})
@@ -376,12 +377,11 @@ def store_public(entry, keyname, local_file, target_name=None,
entry.media_files[keyname], target_filepath)
if delete_if_exists:
mgg.public_store.delete_file(entry.media_files[keyname])
-
try:
mgg.public_store.copy_local_to_storage(local_file, target_filepath)
- except:
+ except Exception as e:
+ _log.error(u'Exception happened: {0}'.format(e))
raise PublicStoreFail(keyname=keyname)
-
# raise an error if the file failed to copy
if not mgg.public_store.file_exists(target_filepath):
raise PublicStoreFail(keyname=keyname)
@@ -409,8 +409,11 @@ class BaseProcessingFail(Exception):
return u"%s:%s" % (
self.__class__.__module__, self.__class__.__name__)
- def __init__(self, **metadata):
- self.metadata = metadata or {}
+ def __init__(self, message=None, **metadata):
+ if message is not None:
+ super(BaseProcessingFail, self).__init__(message)
+ metadata['message'] = message
+ self.metadata = metadata
class BadMediaFail(BaseProcessingFail):
"""
diff --git a/mediagoblin/processing/task.py b/mediagoblin/processing/task.py
index 7f683485..5e0e772d 100644
--- a/mediagoblin/processing/task.py
+++ b/mediagoblin/processing/task.py
@@ -15,8 +15,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
-import urllib
-import urllib2
+
+from six.moves.urllib import request, parse
import celery
from celery.registry import tasks
@@ -42,15 +42,15 @@ def handle_push_urls(feed_url):
hubparameters = {
'hub.mode': 'publish',
'hub.url': feed_url}
- hubdata = urllib.urlencode(hubparameters)
+ hubdata = parse.urlencode(hubparameters)
hubheaders = {
"Content-type": "application/x-www-form-urlencoded",
"Connection": "close"}
for huburl in mgg.app_config["push_urls"]:
- hubrequest = urllib2.Request(huburl, hubdata, hubheaders)
+ hubrequest = request.Request(huburl, hubdata, hubheaders)
try:
- hubresponse = urllib2.urlopen(hubrequest)
- except (urllib2.HTTPError, urllib2.URLError) as exc:
+ hubresponse = request.urlopen(hubrequest)
+ except (request.HTTPError, request.URLError) as exc:
# We retry by default 3 times before failing
_log.info("PuSH url %r gave error %r", huburl, exc)
try:
@@ -74,8 +74,11 @@ class ProcessMedia(celery.Task):
Pass the media entry off to the appropriate processing function
(for now just process_image...)
+ :param media_id: MediaEntry().id
:param feed_url: The feed URL that the PuSH server needs to be
updated for.
+ :param reprocess_action: What particular action should be run. For
+ example, 'initial'.
:param reprocess: A dict containing all of the necessary reprocessing
info for the media_type.
"""
@@ -155,5 +158,19 @@ class ProcessMedia(celery.Task):
entry = mgg.database.MediaEntry.query.filter_by(id=entry_id).first()
json_processing_callback(entry)
+ mgg.database.reset_after_request()
+
+ def after_return(self, *args, **kwargs):
+ """
+ This is called after the task has returned, we should clean up.
+
+ We need to rollback the database to prevent ProgrammingError exceptions
+ from being raised.
+ """
+ # In eager mode we get DetachedInstanceError, we do rollback on_failure
+ # to deal with that case though when in eager mode.
+ if not celery.app.default_app.conf['CELERY_ALWAYS_EAGER']:
+ mgg.database.reset_after_request()
+
tasks.register(ProcessMedia)
diff --git a/mediagoblin/routing.py b/mediagoblin/routing.py
index 9f2584d3..1fbc6e9b 100644
--- a/mediagoblin/routing.py
+++ b/mediagoblin/routing.py
@@ -35,12 +35,11 @@ def get_url_map():
import mediagoblin.submit.routing
import mediagoblin.user_pages.routing
import mediagoblin.edit.routing
- import mediagoblin.webfinger.routing
import mediagoblin.listings.routing
import mediagoblin.notifications.routing
import mediagoblin.oauth.routing
+ import mediagoblin.api.routing
-
for route in PluginManager().get_routes():
add_route(*route)
diff --git a/mediagoblin/static/css/audio.css b/mediagoblin/static/css/audio.css
index e007a0e1..5c50e727 100644
--- a/mediagoblin/static/css/audio.css
+++ b/mediagoblin/static/css/audio.css
@@ -1,6 +1,9 @@
.audio-spectrogram {
position: relative;
}
+.audio-spectrogram > img {
+ width: 100%;
+}
.playhead {
position: absolute;
top: 0;
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 0bd58738..6da19f94 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -25,7 +25,7 @@
src: local('Lato Regular'), local('Lato-Regular'), url('../fonts/Lato-Regular.ttf') format('truetype');
}
-body {
+html, body {
background-color: #161616;
color: #C3C3C3;
padding: 0;
@@ -110,6 +110,23 @@ input, textarea {
/* website structure */
+#wrap {
+ min-height: 100%;
+ height: auto;
+
+ /* This must be equal to the footer height + 5px */
+ margin-bottom: -35px;
+}
+
+#wrap:after {
+ content: "";
+ display: block;
+}
+
+footer, #wrap:after {
+ height: 30px;
+}
+
header {
width: 100%;
padding: 0;
@@ -154,6 +171,26 @@ header {
a.logo {
color: #fff;
font-weight: bold;
+ text-decoration: none;
+}
+
+.status_icon {
+ border-radius: 2px;
+ padding: 4px;
+ margin: 0px 4px;
+}
+
+.num_queued {
+ background: #56446F;
+}
+
+.num_failed {
+ background: #87453B;
+}
+
+.status_icon a {
+ display: inline-block;
+ color: #C3C3C3;
}
.logo img {
@@ -176,9 +213,7 @@ a.logo {
footer {
width: 100%;
- height: 30px;
border-top: 1px solid #333;
- bottom: 0px;
padding: 8px 0;
text-align: center;
font-size: 0.875em;
@@ -196,14 +231,20 @@ footer {
}
.media_image_container {
- display: flex;
- justify-content: center;
}
.media_image {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
max-width: 100%;
}
+.media_other_container {
+ display: flex;
+ justify-content: center;
+}
+
.media_pane {
/* in place for possible future wide view */
/* border-bottom: 1px solid #333333;*/
@@ -353,6 +394,12 @@ text-align: center;
margin-right: auto;
}
+.form_box > h1, .form_box_xl > h1 {
+ /* Fix header overflowing issue. */
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
.form_box_xl {
max-width: 460px;
}
@@ -416,11 +463,9 @@ text-align: center;
}
.form_field_label {
- margin-bottom: 4px;
-}
-
-.form_field_label {
font-size:1.125em;
+ margin-bottom: 0;
+ padding: 10px 0;
}
.form_field_description {
@@ -544,11 +589,11 @@ ul#action_to_resolve {list-style:none; margin-left:10px;}
border-radius: 0 0 5px 5px;
padding: 0 0 6px;
text-overflow: ellipsis;
- white-space: nowrap;
overflow: hidden;
border-color: #0D0D0D;
border-style: solid;
border-width: 1px 1px 2px;
+ position: relative;
}
.media_thumbnail a {
@@ -566,12 +611,11 @@ a.thumb_entry_title {
padding: 8px;
}
-/* For now, this is commented out since our thumbnails are actually 180px high.
- *
- * .media_thumbnail img {
- * max-height: 135px;
- * }
- */
+.entry_type_icon {
+ position: absolute;
+ top: 2px;
+ left: 2px;
+}
.thumb_entry_last {
margin-right: 0px;
@@ -733,6 +777,42 @@ table.media_panel th {
padding-bottom: 4px;
text-align: left;
}
+.thumb-overlay-status {
+ position: absolute;
+ margin: auto;
+ top: 0; bottom: 0; left: 0; right: 0;
+ width: 180px;
+ height: 20px;
+ display: inline;
+ text-align: center;
+ background-color: rgba(255, 255, 255, 0.8);
+}
+
+.thumb-processing {
+ color: black;
+ font-weight: bold;
+}
+
+.thumb-failed {
+ color: red;
+ font-weight: bold;
+}
+
+.thumb-wrapper {
+ position: relative;
+/* for proportional thumb resizing */
+ width: auto;
+ height: auto;
+ display: inline-block;
+}
+
+.thumb-wrapper img {
+ max-height: 180px;
+ max-width: 180px;
+}
+.media_panel td {
+ vertical-align: middle;
+}
/* moderator panels */
@@ -872,7 +952,12 @@ pre {
margin-left:3px;
margin-right:3px;
}
+ #thingy_view {
+ width:640px;
+ height:640px;
+ }
}
+
/* Tablet Portrait size to standard 960 (devices and browsers) */
@media only screen and (min-width: 768px) and (max-width: 959px) {
.container .three.columns.media_thumbnail {
@@ -881,7 +966,7 @@ pre {
margin-right:2px;
}
.media_thumbnail.thumb_entry img {
- margin-left: -16.5px;
+ max-width:100%;
}
.thumb_gallery {
margin-left: 0;
@@ -889,7 +974,12 @@ pre {
}
.navigation_button {
}
+ #thingy_view {
+ width:508px;
+ height:508px;
+ }
}
+
/* All Mobile Sizes (devices and browser) */
@media screen and (max-width: 767px) {
.thumb_row {
@@ -931,6 +1021,22 @@ pre {
}
}
+/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
+@media only screen and (min-width: 480px) and (max-width: 767px) {
+ #thingy_view {
+ width:420px;
+ height:420px;
+ }
+}
+
+/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
+@media only screen and (max-width: 479px) {
+ #thingy_view {
+ width:300px;
+ height:300px;
+ }
+}
+
p.verifier {
text-align:center;
font-size:50px;
@@ -950,3 +1056,19 @@ table.metadata_editor tr td {
table.metadata_editor tr td.form_field_input input {
width:350px;
}
+
+.application {
+ min-height: 30px;
+ margin-left: 70px;
+}
+
+.application-icon {
+ position: absolute;
+ left: 12px;
+ width: 50px;
+ height: 50px;
+}
+
+.application-button {
+ float: right;
+}
diff --git a/mediagoblin/static/extlib/video-js b/mediagoblin/static/extlib/video-js
index 65652d6e..58401be0 120000
--- a/mediagoblin/static/extlib/video-js
+++ b/mediagoblin/static/extlib/video-js
@@ -1 +1 @@
-../../../extlib/video-js/ \ No newline at end of file
+../../../extlib/video.js/dist/video-js \ No newline at end of file
diff --git a/mediagoblin/static/images/small-gavroche.png b/mediagoblin/static/images/small-gavroche.png
new file mode 100644
index 00000000..13192d97
--- /dev/null
+++ b/mediagoblin/static/images/small-gavroche.png
Binary files differ
diff --git a/mediagoblin/static/images/small-gavroche.xcf b/mediagoblin/static/images/small-gavroche.xcf
new file mode 100644
index 00000000..0291d2e1
--- /dev/null
+++ b/mediagoblin/static/images/small-gavroche.xcf
Binary files differ
diff --git a/mediagoblin/static/images/type_icons/video.png b/mediagoblin/static/images/type_icons/video.png
new file mode 100644
index 00000000..83687617
--- /dev/null
+++ b/mediagoblin/static/images/type_icons/video.png
Binary files differ
diff --git a/mediagoblin/static/js/extlib/html5slider.js b/mediagoblin/static/js/extlib/html5slider.js
deleted file mode 120000
index feae2cb8..00000000
--- a/mediagoblin/static/js/extlib/html5slider.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../extlib/html5slider/html5slider.js \ No newline at end of file
diff --git a/mediagoblin/static/js/extlib/jquery.js b/mediagoblin/static/js/extlib/jquery.js
index d78f5cc3..8c711f27 120000
--- a/mediagoblin/static/js/extlib/jquery.js
+++ b/mediagoblin/static/js/extlib/jquery.js
@@ -1 +1 @@
-../../../../extlib/jquery/jquery.js \ No newline at end of file
+../../../../extlib/jquery/dist/jquery.js \ No newline at end of file
diff --git a/mediagoblin/static/js/geolocation-map.js b/mediagoblin/static/js/geolocation-map.js
index 26d94c5d..c30788f7 100644
--- a/mediagoblin/static/js/geolocation-map.js
+++ b/mediagoblin/static/js/geolocation-map.js
@@ -30,13 +30,11 @@ $(document).ready(function () {
// Get a new map instance attached and element with id="tile-map"
var map = new L.Map('tile-map');
- var mqtileUrl = 'http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg';
+ var mqtileUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var mqtileAttrib = '<a id="osm_license_link">see map license</a>';
var mqtile = new L.TileLayer(
mqtileUrl,
- {maxZoom: 18,
- attribution: mqtileAttrib,
- subdomains: '1234'});
+ {maxZoom: 18});
map.attributionControl.setPrefix('');
var location = new L.LatLng(latitude, longitude);
diff --git a/mediagoblin/static/js/header_dropdown.js b/mediagoblin/static/js/header_dropdown.js
index 3ee46228..979d2690 100644
--- a/mediagoblin/static/js/header_dropdown.js
+++ b/mediagoblin/static/js/header_dropdown.js
@@ -17,9 +17,27 @@
*/
$(document).ready(function(){
- $("#header_dropdown").hide();
- $(".header_dropdown_up").hide();
- $(".header_dropdown_down,.header_dropdown_up").click(function() {
+ // The header drop-down header panel defaults to open until you explicitly
+ // close it. After that, the panel open/closed setting will persist across
+ // page loads.
+
+ // Initialise the panel status when page is loaded.
+ if (localStorage.getItem("panel_closed")) {
+ $("#header_dropdown").hide();
+ $(".header_dropdown_up").hide();
+ }
+ else {
+ $(".header_dropdown_down").hide();
+ }
+
+ // Toggle and persist the panel status.
+ $(".header_dropdown_down, .header_dropdown_up").click(function() {
+ if (localStorage.getItem("panel_closed")) {
+ localStorage.removeItem("panel_closed");
+ }
+ else {
+ localStorage.setItem("panel_closed", "true");
+ }
$(".header_dropdown_down").toggle();
$(".header_dropdown_up").toggle();
$("#header_dropdown").slideToggle();
diff --git a/mediagoblin/static/js/post_comment.js b/mediagoblin/static/js/post_comment.js
new file mode 100644
index 00000000..431c222f
--- /dev/null
+++ b/mediagoblin/static/js/post_comment.js
@@ -0,0 +1,63 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $(function() {
+ // Hide this button if script is enabled
+ $('.form_submit_buttons').find('input').hide();
+
+ // Include this link if script is enabled
+ $('.form_submit_buttons').append(
+ '<a class="button_action" id="post_comment" type="button">' +
+ 'Add this comment </a>');
+
+ $('#post_comment').click(function() {
+ $.ajax({
+ url: $('#postCommentURL').val(),
+ data: $('#form_comment').serialize(),
+ type: 'POST',
+ success: function(response) {
+ var message = $(response).find('.mediagoblin_messages');
+ var commentsInResponse = $($(response).find('.media_comments')).find('li');
+ var commentsInPage = $('.media_comments').find('ul');
+
+ // Post the message
+ message.css({"position":"fixed", "top":"50px", "width":"100%"});
+ $('body').append(message);
+ message.delay(1500).fadeOut();
+
+ // Checking if there is new comment
+ if(commentsInResponse.length != $(commentsInPage).find('li').length) {
+ // Post comment and scroll down to it
+ var newComment = commentsInResponse[commentsInResponse.length - 1];
+ $('#form_comment').fadeOut('fast');
+ $('#button_addcomment').fadeIn('fast');
+ $('#comment_preview').replaceWith("<div id=comment_preview></div>");
+ $(commentsInPage).append(newComment);
+ $('html, body').animate({
+ scrollTop: $(newComment).offset().top
+ }, 1000);
+ }
+ },
+ error: function(error) {
+ console.log(error);
+ }
+ });
+ });
+ });
+}); \ No newline at end of file
diff --git a/mediagoblin/storage/__init__.py b/mediagoblin/storage/__init__.py
index 51b46c07..14f13bd3 100644
--- a/mediagoblin/storage/__init__.py
+++ b/mediagoblin/storage/__init__.py
@@ -14,9 +14,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import absolute_import
+
import shutil
import uuid
+import six
+
from werkzeug.utils import secure_filename
from mediagoblin.tools import common
@@ -174,7 +178,7 @@ class StorageInterface(object):
shutil.copy(self.get_local_path(filepath), dest_path)
else:
with self.get_file(filepath, 'rb') as source_file:
- with file(dest_path, 'wb') as dest_file:
+ with open(dest_path, 'wb') as dest_file:
# Copy from remote storage in 4M chunks
shutil.copyfileobj(source_file, dest_file, length=4*1048576)
@@ -187,7 +191,7 @@ class StorageInterface(object):
your storage system.
"""
with self.get_file(filepath, 'wb') as dest_file:
- with file(filename, 'rb') as source_file:
+ with open(filename, 'rb') as source_file:
# Copy to storage system in 4M chunks
shutil.copyfileobj(source_file, dest_file, length=4*1048576)
@@ -220,7 +224,7 @@ def clean_listy_filepath(listy_filepath):
A cleaned list of unicode objects.
"""
cleaned_filepath = [
- unicode(secure_filename(filepath))
+ six.text_type(secure_filename(filepath))
for filepath in listy_filepath]
if u'' in cleaned_filepath:
@@ -257,7 +261,7 @@ def storage_system_from_config(config_section):
"""
# This construct is needed, because dict(config) does
# not replace the variables in the config items.
- config_params = dict(config_section.iteritems())
+ config_params = dict(six.iteritems(config_section))
if 'storage_class' in config_params:
storage_class = config_params['storage_class']
@@ -268,4 +272,4 @@ def storage_system_from_config(config_section):
storage_class = common.import_component(storage_class)
return storage_class(**config_params)
-import filestorage
+from . import filestorage
diff --git a/mediagoblin/storage/cloudfiles.py b/mediagoblin/storage/cloudfiles.py
index 47c81ad6..61665ea0 100644
--- a/mediagoblin/storage/cloudfiles.py
+++ b/mediagoblin/storage/cloudfiles.py
@@ -143,7 +143,7 @@ class CloudFilesStorage(StorageInterface):
"""
# Override this method, using the "stream" iterator for efficient streaming
with self.get_file(filepath, 'rb') as source_file:
- with file(dest_path, 'wb') as dest_file:
+ with open(dest_path, 'wb') as dest_file:
for data in source_file:
dest_file.write(data)
@@ -164,7 +164,7 @@ class CloudFilesStorage(StorageInterface):
# TODO: Fixing write() still seems worthwhile though.
_log.debug('Sending {0} to cloudfiles...'.format(filepath))
with self.get_file(filepath, 'wb') as dest_file:
- with file(filename, 'rb') as source_file:
+ with open(filename, 'rb') as source_file:
# Copy to storage system in 4096 byte chunks
dest_file.send(source_file)
@@ -193,27 +193,6 @@ class CloudFilesStorageObjectWrapper():
return self.storage_object.read(*args, **kwargs)
def write(self, data, *args, **kwargs):
- """
- write data to the cloudfiles storage object
-
- The original motivation for this wrapper is to ensure
- that buffered writing to a cloudfiles storage object does not overwrite
- any preexisting data.
-
- Currently this method does not support any write modes except "append".
- However if we should need it it would be easy implement.
- """
- _log.warn(
- '{0}.write() has bad performance! Use .send instead for now'\
- .format(self.__class__.__name__))
-
- if self.storage_object.size and type(data) == str:
- _log.debug('{0} is > 0 in size, appending data'.format(
- self.storage_object.name))
- data = self.read() + data
-
- _log.debug('Writing {0}'.format(
- self.storage_object.name))
self.storage_object.write(data, *args, **kwargs)
def send(self, *args, **kw):
diff --git a/mediagoblin/storage/filestorage.py b/mediagoblin/storage/filestorage.py
index 29b8383b..89f43276 100644
--- a/mediagoblin/storage/filestorage.py
+++ b/mediagoblin/storage/filestorage.py
@@ -14,14 +14,25 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import io
+import os
+import shutil
+
+import six.moves.urllib.parse as urlparse
+
from mediagoblin.storage import (
StorageInterface,
clean_listy_filepath,
NoWebServing)
-import os
-import shutil
-import urlparse
+class FileObjectAwareFile(io.FileIO):
+ def write(self, data):
+ if hasattr(data, 'read'):
+ # We can call data.read(). It means that the data is a file-like
+ # object, which should be saved RAM-friendly way
+ shutil.copyfileobj(data, self)
+ else:
+ super(FileObjectAwareFile, self).write(data)
class BasicFileStorage(StorageInterface):
@@ -59,7 +70,7 @@ class BasicFileStorage(StorageInterface):
os.makedirs(directory)
# Grab and return the file in the mode specified
- return open(self._resolve_filepath(filepath), mode)
+ return FileObjectAwareFile(self._resolve_filepath(filepath), mode)
def delete_file(self, filepath):
"""Delete file at filepath
diff --git a/mediagoblin/storage/mountstorage.py b/mediagoblin/storage/mountstorage.py
index dffc619b..a829db31 100644
--- a/mediagoblin/storage/mountstorage.py
+++ b/mediagoblin/storage/mountstorage.py
@@ -14,6 +14,10 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function
+
+import six
+
from mediagoblin.storage import StorageInterface, clean_listy_filepath
@@ -59,9 +63,9 @@ class MountStorage(StorageInterface):
"""
new_ent = clean_listy_filepath(dirpath)
- print "Mounting:", repr(new_ent)
+ print("Mounting:", repr(new_ent))
already, rem_1, table, rem_2 = self._resolve_to_backend(new_ent, True)
- print "===", repr(already), repr(rem_1), repr(rem_2), len(table)
+ print("===", repr(already), repr(rem_1), repr(rem_2), len(table))
assert (len(rem_2) > 0) or (None not in table), \
"That path is already mounted"
@@ -120,7 +124,7 @@ class MountStorage(StorageInterface):
v = table.get(None)
if v:
res.append(" " * len(indent) + repr(indent) + ": " + repr(v))
- for k, v in table.iteritems():
+ for k, v in six.iteritems(table):
if k == None:
continue
res.append(" " * len(indent) + repr(k) + ":")
diff --git a/mediagoblin/submit/forms.py b/mediagoblin/submit/forms.py
index 6c0e8e9c..69d211e6 100644
--- a/mediagoblin/submit/forms.py
+++ b/mediagoblin/submit/forms.py
@@ -16,7 +16,7 @@
import wtforms
-
+from wtforms.ext.sqlalchemy.fields import QuerySelectField
from mediagoblin import mg_globals
from mediagoblin.tools.text import tag_length_validator
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
@@ -33,7 +33,7 @@ def get_submit_start_form(form, **kwargs):
file = wtforms.FileField(
_('File'),
description=desc)
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField(
@@ -41,7 +41,7 @@ def get_submit_start_form(form, **kwargs):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- tags = wtforms.TextField(
+ tags = wtforms.StringField(
_('Tags'),
[tag_length_validator],
description=_(
@@ -50,6 +50,9 @@ def get_submit_start_form(form, **kwargs):
_('License'),
[wtforms.validators.Optional(),],
choices=licenses_as_choices())
+ collection = QuerySelectField(
+ _('Collection'),
+ allow_blank=True, blank_text=_('-- Select --'), get_label='title',)
max_file_size = wtforms.HiddenField('')
upload_limit = wtforms.HiddenField('')
uploaded = wtforms.HiddenField('')
@@ -57,7 +60,7 @@ def get_submit_start_form(form, **kwargs):
return SubmitStartForm(form, **kwargs)
class AddCollectionForm(wtforms.Form):
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500), wtforms.validators.InputRequired()])
description = wtforms.TextAreaField(
diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py
index d54591d6..08a603e9 100644
--- a/mediagoblin/submit/lib.py
+++ b/mediagoblin/submit/lib.py
@@ -18,11 +18,15 @@ import logging
import uuid
from os.path import splitext
+import six
+
from werkzeug.utils import secure_filename
from werkzeug.datastructures import FileStorage
from mediagoblin import mg_globals
+from mediagoblin.tools.response import json_response
from mediagoblin.tools.text import convert_to_tag_list_of_dicts
+from mediagoblin.tools.federation import create_activity, create_generator
from mediagoblin.db.models import Collection, MediaEntry, ProcessingMetaData
from mediagoblin.processing import mark_entry_failed
from mediagoblin.processing.task import ProcessMedia
@@ -49,7 +53,7 @@ def new_upload_entry(user):
Create a new MediaEntry for uploading
"""
entry = MediaEntry()
- entry.uploader = user.id
+ entry.actor = user.id
entry.license = user.license_preference
return entry
@@ -58,7 +62,7 @@ def get_upload_file_limits(user):
"""
Get the upload_limit and max_file_size for this user
"""
- if user.upload_limit >= 0:
+ if user.upload_limit is not None and user.upload_limit >= 0: # TODO: debug this
upload_limit = user.upload_limit
else:
upload_limit = mg_globals.app_config.get('upload_limit', None)
@@ -100,10 +104,7 @@ class UserPastUploadLimit(UploadLimitError):
def submit_media(mg_app, user, submitted_file, filename,
title=None, description=None, collection_slug=None,
license=None, metadata=None, tags_string=u"",
- upload_limit=None, max_file_size=None,
- callback_url=None,
- # If provided we'll do the feed_url update, otherwise ignore
- urlgen=None,):
+ callback_url=None, urlgen=None,):
"""
Args:
- mg_app: The MediaGoblinApp instantiated for this process
@@ -119,17 +120,17 @@ def submit_media(mg_app, user, submitted_file, filename,
- license: license for this media entry
- tags_string: comma separated string of tags to be associated
with this entry
- - upload_limit: size in megabytes that's the per-user upload limit
- - max_file_size: maximum size each file can be that's uploaded
- callback_url: possible post-hook to call after submission
- - urlgen: if provided, used to do the feed_url update
+ - urlgen: if provided, used to do the feed_url update and assign a public
+ ID used in the API (very important).
"""
+ upload_limit, max_file_size = get_upload_file_limits(user)
if upload_limit and user.uploaded >= upload_limit:
raise UserPastUploadLimit()
# If the filename contains non ascii generate a unique name
if not all(ord(c) < 128 for c in filename):
- filename = unicode(uuid.uuid4()) + splitext(filename)[-1]
+ filename = six.text_type(uuid.uuid4()) + splitext(filename)[-1]
# Sniff the submitted media to determine which
# media plugin should handle processing
@@ -138,7 +139,7 @@ def submit_media(mg_app, user, submitted_file, filename,
# create entry and save in database
entry = new_upload_entry(user)
entry.media_type = media_type
- entry.title = (title or unicode(splitext(filename)[0]))
+ entry.title = (title or six.text_type(splitext(filename)[0]))
entry.description = description or u""
@@ -155,7 +156,7 @@ def submit_media(mg_app, user, submitted_file, filename,
queue_file = prepare_queue_task(mg_app, entry, filename)
with queue_file:
- queue_file.write(submitted_file.read())
+ queue_file.write(submitted_file)
# Get file size and round to 2 decimal places
file_size = mg_app.queue_store.get_file_size(
@@ -187,15 +188,27 @@ def submit_media(mg_app, user, submitted_file, filename,
metadata.save()
if urlgen:
+ # Generate the public_id, this is very importent, especially relating
+ # to deletion, it allows the shell to be accessable post-delete!
+ entry.get_public_id(urlgen)
+
+ # Generate the feed URL
feed_url = urlgen(
'mediagoblin.user_pages.atom_feed',
qualified=True, user=user.username)
else:
feed_url = None
+ add_comment_subscription(user, entry)
+
+ # Create activity
+ create_activity("post", entry, entry.actor)
+ entry.save()
+
# add to collection
if collection_slug:
- collection = Collection.query.filter_by(slug=collection_slug, creator=user.id).first()
+ collection = Collection.query.filter_by(slug=collection_slug,
+ actor=user.id).first()
if collection:
add_media_to_collection(collection, entry)
@@ -205,8 +218,6 @@ def submit_media(mg_app, user, submitted_file, filename,
# conditions with changes to the document via processing code)
run_process_media(entry, feed_url)
- add_comment_subscription(user, entry)
-
return entry
@@ -220,7 +231,7 @@ def prepare_queue_task(app, entry, filename):
# (If we got it off the task's auto-generation, there'd be
# a risk of a race condition when we'd save after sending
# off the task)
- task_id = unicode(uuid.uuid4())
+ task_id = six.text_type(uuid.uuid4())
entry.queued_task_id = task_id
# Now store generate the queueing related filename
@@ -267,3 +278,43 @@ def run_process_media(entry, feed_url=None,
mark_entry_failed(entry.id, exc)
# re-raise the exception
raise
+
+
+def api_upload_request(request, file_data, entry):
+ """ This handles a image upload request """
+ # Use the same kind of method from mediagoblin/submit/views:submit_start
+ entry.title = file_data.filename
+
+ # This will be set later but currently we just don't have enough information
+ entry.slug = None
+
+ # This is a MUST.
+ entry.get_public_id(request.urlgen)
+
+ queue_file = prepare_queue_task(request.app, entry, file_data.filename)
+ with queue_file:
+ queue_file.write(request.data)
+
+ entry.save()
+ return json_response(entry.serialize(request))
+
+def api_add_to_feed(request, entry):
+ """ Add media to Feed """
+ feed_url = request.urlgen(
+ 'mediagoblin.user_pages.atom_feed',
+ qualified=True, user=request.user.username
+ )
+
+ add_comment_subscription(request.user, entry)
+
+ # Create activity
+ activity = create_activity(
+ verb="post",
+ obj=entry,
+ actor=entry.actor,
+ generator=create_generator(request)
+ )
+ entry.save()
+ run_process_media(entry, feed_url)
+
+ return activity
diff --git a/mediagoblin/plugins/oauth/templates/oauth/client/connections.html b/mediagoblin/submit/task.py
index 63b0230a..4ebde502 100644..100755
--- a/mediagoblin/plugins/oauth/templates/oauth/client/connections.html
+++ b/mediagoblin/submit/task.py
@@ -1,4 +1,3 @@
-{#
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
@@ -14,21 +13,26 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#}
-{% extends "mediagoblin/base.html" %}
-{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
-{% block mediagoblin_content %}
-<h1>{% trans %}OAuth client connections{% endtrans %}</h1>
-{% if connections %}
-<ul>
- {% for connection in connections %}
- <li><span title="{{ connection.client.description }}">{{
- connection.client.name }}</span> - {{ connection.state }}
- </li>
- {% endfor %}
-</ul>
-{% else %}
-<p>You haven't connected using an OAuth client before.</p>
-{% endif %}
-{% endblock %}
+import celery
+import datetime
+import pytz
+
+from mediagoblin.db.models import MediaEntry
+
+@celery.task()
+def collect_garbage():
+ """
+ Garbage collection to clean up media
+
+ This will look for all critera on models to clean
+ up. This is primerally written to clean up media that's
+ entered a erroneous state.
+ """
+ cuttoff = datetime.datetime.now(pytz.UTC) - datetime.timedelta(days=1)
+
+ garbage = MediaEntry.query.filter(MediaEntry.created < cuttoff)
+ garbage = garbage.filter(MediaEntry.state == "unprocessed")
+
+ for entry in garbage.all():
+ entry.delete()
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 42c378a8..7bbfb645 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from mediagoblin import messages
import mediagoblin.mg_globals as mg_globals
@@ -21,17 +23,17 @@ import logging
_log = logging.getLogger(__name__)
-
+from mediagoblin.db.models import Collection
+from mediagoblin.tools.federation import create_activity
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.response import render_to_response, redirect
from mediagoblin.decorators import require_active_login, user_has_privilege
from mediagoblin.submit import forms as submit_forms
-from mediagoblin.messages import add_message, SUCCESS
-from mediagoblin.media_types import \
- InvalidFileType, FileTypeNotSupported
+from mediagoblin.media_types import FileTypeNotSupported
from mediagoblin.submit.lib import \
check_file_field, submit_media, get_upload_file_limits, \
FileUploadLimit, UserUploadLimit, UserPastUploadLimit
+from mediagoblin.user_pages.lib import add_media_to_collection
@require_active_login
@@ -48,6 +50,17 @@ def submit_start(request):
max_file_size=max_file_size,
upload_limit=upload_limit,
uploaded=request.user.uploaded)
+ users_collections = Collection.query.filter_by(
+ actor=request.user.id,
+ type=Collection.USER_DEFINED_TYPE
+ ).order_by(Collection.title)
+
+ # Only show the Collections dropdown if the user has some
+ # collections set up
+ if users_collections.count() > 0:
+ submit_form.collection.query = users_collections
+ else:
+ del submit_form.collection
if request.method == 'POST' and submit_form.validate():
if not check_file_field(request, 'file'):
@@ -55,18 +68,27 @@ def submit_start(request):
_(u'You must provide a file.'))
else:
try:
- submit_media(
+ media = submit_media(
mg_app=request.app, user=request.user,
submitted_file=request.files['file'],
filename=request.files['file'].filename,
- title=unicode(submit_form.title.data),
- description=unicode(submit_form.description.data),
- license=unicode(submit_form.license.data) or None,
+ title=six.text_type(submit_form.title.data),
+ description=six.text_type(submit_form.description.data),
+ license=six.text_type(submit_form.license.data) or None,
tags_string=submit_form.tags.data,
- upload_limit=upload_limit, max_file_size=max_file_size,
urlgen=request.urlgen)
- add_message(request, SUCCESS, _('Woohoo! Submitted!'))
+ if submit_form.collection and submit_form.collection.data:
+ add_media_to_collection(
+ submit_form.collection.data, media)
+ create_activity(
+ "add", media, request.user,
+ target=submit_form.collection.data)
+
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('Woohoo! Submitted!'))
return redirect(request, "mediagoblin.user_pages.user_home",
user=request.user.username)
@@ -87,18 +109,10 @@ def submit_start(request):
_('Sorry, you have reached your upload limit.'))
return redirect(request, "mediagoblin.user_pages.user_home",
user=request.user.username)
-
+ except FileTypeNotSupported as e:
+ submit_form.file.errors.append(e)
except Exception as e:
- '''
- This section is intended to catch exceptions raised in
- mediagoblin.media_types
- '''
- if isinstance(e, InvalidFileType) or \
- isinstance(e, FileTypeNotSupported):
- submit_form.file.errors.append(
- e)
- else:
- raise
+ raise
return render_to_response(
request,
@@ -117,24 +131,30 @@ def add_collection(request, media=None):
if request.method == 'POST' and submit_form.validate():
collection = request.db.Collection()
- collection.title = unicode(submit_form.title.data)
- collection.description = unicode(submit_form.description.data)
- collection.creator = request.user.id
+ collection.title = six.text_type(submit_form.title.data)
+ collection.description = six.text_type(submit_form.description.data)
+ collection.actor = request.user.id
+ collection.type = request.db.Collection.USER_DEFINED_TYPE
collection.generate_slug()
# Make sure this user isn't duplicating an existing collection
existing_collection = request.db.Collection.query.filter_by(
- creator=request.user.id,
+ actor=request.user.id,
+ type=request.db.Collection.USER_DEFINED_TYPE,
title=collection.title).first()
if existing_collection:
- add_message(request, messages.ERROR,
- _('You already have a collection called "%s"!') \
- % collection.title)
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _('You already have a collection called "%s"!') %
+ collection.title)
else:
collection.save()
- add_message(request, SUCCESS,
+ messages.add_message(
+ request,
+ messages.SUCCESS,
_('Collection "%s" added!') % collection.title)
return redirect(request, "mediagoblin.user_pages.user_home",
diff --git a/mediagoblin/templates/mediagoblin/api/oob.html b/mediagoblin/templates/mediagoblin/api/oob.html
index d290472a..e4d3a132 100644
--- a/mediagoblin/templates/mediagoblin/api/oob.html
+++ b/mediagoblin/templates/mediagoblin/api/oob.html
@@ -25,9 +25,7 @@
<h1>{% trans %}Authorization Complete{% endtrans %}</h1>
-<h4>{% trans %}Copy and paste this into your client:{% endtrans %}</h4>
+<h4>{% trans %}Copy and paste this <strong>verifier code</strong> into your client:{% endtrans %}</h4>
-<p class="verifier">
- {{ oauth_request.verifier }}
-</p>
+<p class="verifier">{{ oauth_request.verifier }}</p>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/base.html b/mediagoblin/templates/mediagoblin/base.html
index 015fcba8..9b0b7168 100644
--- a/mediagoblin/templates/mediagoblin/base.html
+++ b/mediagoblin/templates/mediagoblin/base.html
@@ -27,6 +27,9 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
+ {% if app_config['no_referrer'] -%}
+ <meta name="referrer" content="no-referrer">
+ {%- endif %}
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<title>{% block title %}{{ app_config['html_title'] }}{% endblock %}</title>
<link rel="stylesheet" type="text/css"
@@ -62,138 +65,144 @@
<body>
{% include 'mediagoblin/bits/body_start.html' %}
{% block mediagoblin_body %}
- {% block mediagoblin_header %}
- <div class="container">
- <header>
- <div class="row foot">
- <div class="header_left">
- {%- include "mediagoblin/bits/logo.html" -%}
- {% block mediagoblin_header_title %}{% endblock %}
- </div>
- <div class="header_right">
- {%- if request.user %}
- {% if request.user and
- request.user.has_privilege('active') and
- not request.user.is_banned() %}
+ <div id="wrap">
+ {% block mediagoblin_header %}
+ <div class="container">
+ <header>
+ <div class="row foot">
+ <div class="header_left">
+ {%- include "mediagoblin/bits/logo.html" -%}
+ {% template_hook("header_left") %}
+ {% block mediagoblin_header_title %}{% endblock %}
+ </div>
+ <div class="header_right">
+ {% template_hook("header_extra") %}
+ {%- if request.user %}
+ {% if request.user and
+ request.user.has_privilege('active') and
+ not request.user.is_banned() %}
- {% set notification_count = get_notification_count(request.user.id) %}
- {% if notification_count %}
+ {% set notification_count = get_notification_count(request.user.id) %}
+ {% if notification_count %}
+ <a href="javascript:;"
+ class="notification-gem button_action button_info"
+ title="Notifications">
+ {{ notification_count }}</a>
+ {% endif %}
<a href="javascript:;"
- class="notification-gem button_action button_info"
- title="Notifications">
- {{ notification_count }}</a>
+ class="button_action header_dropdown_down"
+ aria-controls="header_dropdown">&#9660;</a>
+ <a href="javascript:;"
+ class="button_action header_dropdown_up"
+ aria-controls="header_dropdown">&#9650;</a>
+ {% elif request.user and not request.user.has_privilege('active') %}
+ {# the following link should only appear when verification is needed #}
+ <a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
+ user=request.user.username) }}"
+ class="button_action_highlight">
+ {% trans %}Verify your email!{% endtrans %}</a>
+ or <a id="logout" href=
+ {% if persona is not defined %}
+ "{{ request.urlgen('mediagoblin.auth.logout') }}"
+ {% else %}
+ "javascript:;"
+ {% endif %}
+ >{% trans %}log out{% endtrans %}</a>
+ {% elif request.user and request.user.is_banned() %}
+ <a id="logout" href=
+ {% if persona is not defined %}
+ "{{ request.urlgen('mediagoblin.auth.logout') }}"
+ {% else %}
+ "javascript:;"
+ {% endif %}
+ >{% trans %}log out{% endtrans %}</a>
+ {% endif %}
+ {%- elif auth %}
+ <a href=
+ {% if persona_auth is defined %}
+ "javascript:;" id="persona_login"
+ {% else %}
+ "{{ request.urlgen('mediagoblin.auth.login') }}"
{% endif %}
- <a href="javascript:;"
- class="button_action header_dropdown_down"
- aria-controls="header_dropdown">&#9660;</a>
- <a href="javascript:;"
- class="button_action header_dropdown_up"
- aria-controls="header_dropdown">&#9650;</a>
- {% elif request.user and not request.user.has_privilege('active') %}
- {# the following link should only appear when verification is needed #}
- <a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
- user=request.user.username) }}"
- class="button_action_highlight">
- {% trans %}Verify your email!{% endtrans %}</a>
- or <a id="logout" href=
- {% if persona is not defined %}
- "{{ request.urlgen('mediagoblin.auth.logout') }}"
- {% else %}
- "javascript:;"
- {% endif %}
- >{% trans %}log out{% endtrans %}</a>
- {% elif request.user and request.user.is_banned() %}
- <a id="logout" href=
- {% if persona is not defined %}
- "{{ request.urlgen('mediagoblin.auth.logout') }}"
- {% else %}
- "javascript:;"
- {% endif %}
- >{% trans %}log out{% endtrans %}</a>
- {% endif %}
- {%- elif auth %}
- <a href=
- {% if persona_auth is defined %}
- "javascript:;" id="persona_login"
- {% else %}
- "{{ request.urlgen('mediagoblin.auth.login') }}"
- {% endif %}
- >
- {%- trans %}Log in{% endtrans -%}
- </a>
- {%- endif %}
- </div>
- <div class="clear"></div>
- {% if request.user and request.user.has_privilege('active') %}
- <div id="header_dropdown">
- <p>
- <span class="dropdown_title">
- {% trans user_url=request.urlgen('mediagoblin.user_pages.user_home',
- user=request.user.username),
- user_name=request.user.username -%}
- <a href="{{ user_url }}">{{ user_name }}</a>'s account
- {%- endtrans %}
- </span>
- &middot;
- <a href="{{ request.urlgen('mediagoblin.edit.account') }}">{%- trans %}Change account settings{% endtrans -%}</a>
- &middot;
- <a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
- user=request.user.username) }}">
- {%- trans %}Media processing panel{% endtrans -%}
+ >
+ {%- trans %}Log in{% endtrans -%}
</a>
- &middot;
- {% template_hook("blog_dashboard_home") %}
- <a id="logout" href=
- {% if persona is not defined %}
- "{{ request.urlgen('mediagoblin.auth.logout') }}"
- {% else %}
- "javascript:;"
- {% endif %}
- >{% trans %}Log out{% endtrans %}</a>
- </p>
- <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
- {%- trans %}Add media{% endtrans -%}
- </a>
- <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.collection') }}">
- {%- trans %}Create new collection{% endtrans -%}
- </a>
- {% template_hook("header_dropdown_buttons") %}
- {% if request.user.has_privilege('admin','moderator') %}
+ {%- endif %}
+ </div>
+ <div class="clear"></div>
+ {% if request.user and request.user.has_privilege('active') %}
+ <div id="header_dropdown">
<p>
- <span class="dropdown_title">Moderation powers:</span>
- <a href="{{ request.urlgen('mediagoblin.moderation.media_panel') }}">
- {%- trans %}Media processing panel{% endtrans -%}
- </a>
+ <span class="dropdown_title">
+ {% trans user_url=request.urlgen('mediagoblin.user_pages.user_home',
+ user=request.user.username),
+ user_name=request.user.username -%}
+ <a href="{{ user_url }}">{{ user_name }}</a>'s account
+ {%- endtrans %}
+ </span>
&middot;
- <a href="{{ request.urlgen('mediagoblin.moderation.users') }}">
- {%- trans %}User management panel{% endtrans -%}
- </a>
+ <a href="{{ request.urlgen('mediagoblin.edit.account') }}">{%- trans %}Change account settings{% endtrans -%}</a>
&middot;
- <a href="{{ request.urlgen('mediagoblin.moderation.reports') }}">
- {%- trans %}Report management panel{% endtrans -%}
+ <a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username) }}">
+ {%- trans %}Media processing panel{% endtrans -%}
</a>
- {% template_hook("moderation_powers") %}
+ &middot;
+ {% template_hook("blog_dashboard_home") %}
+ <a id="logout" href=
+ {% if persona is not defined %}
+ "{{ request.urlgen('mediagoblin.auth.logout') }}"
+ {% else %}
+ "javascript:;"
+ {% endif %}
+ >{% trans %}Log out{% endtrans %}</a>
</p>
- {% endif %}
- {% include 'mediagoblin/fragments/header_notifications.html' %}
- </div>
+ <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
+ {%- trans %}Add media{% endtrans -%}
+ </a>
+ <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.collection') }}">
+ {%- trans %}Create new collection{% endtrans -%}
+ </a>
+ {% template_hook("header_dropdown_buttons") %}
+ {% if request.user.has_privilege('moderator') %}
+ <p>
+ <span class="dropdown_title">{% trans %}Moderation powers:{% endtrans %}</span>
+ <a href="{{ request.urlgen('mediagoblin.moderation.media_panel') }}">
+ {%- trans %}Media processing panel{% endtrans -%}
+ </a>
+ &middot;
+ <a href="{{ request.urlgen('mediagoblin.moderation.users') }}">
+ {%- trans %}User management panel{% endtrans -%}
+ </a>
+ &middot;
+ <a href="{{ request.urlgen('mediagoblin.moderation.reports') }}">
+ {%- trans %}Report management panel{% endtrans -%}
+ </a>
+ {% template_hook("moderation_powers") %}
+ </p>
+ {% endif %}
+ {% include 'mediagoblin/fragments/header_notifications.html' %}
+ </div>
+ {% endif %}
+ </div><!-- end row -->
+ </header>
+ </div>
+ {% endblock %}
+ <div class="container">
+ {% include 'mediagoblin/bits/above_content.html' %}
+ <div class="mediagoblin_content">
+ {% include "mediagoblin/utils/messages.html" %}
+ {% block mediagoblin_content %}
+ {% endblock mediagoblin_content %}
+ {% if csrf_token is defined %}
+ {% template_hook("persona_form") %}
{% endif %}
- </div><!-- end row -->
- </header>
- </div>
- {% endblock %}
- <div class="container">
- {% include 'mediagoblin/bits/above_content.html' %}
- <div class="mediagoblin_content">
- {% include "mediagoblin/utils/messages.html" %}
- {% block mediagoblin_content %}
- {% endblock mediagoblin_content %}
- {% if csrf_token is defined %}
- {% template_hook("persona_form") %}
- {% endif %}
+ </div>
</div>
- {%- include "mediagoblin/bits/base_footer.html" %}
</div>
+ <div class="container">
+ {%- include "mediagoblin/bits/base_footer.html" %}
+ </div>
{%- endblock mediagoblin_body %}
{% include 'mediagoblin/bits/body_end.html' %}
</body>
diff --git a/mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html b/mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html
index 3d93ea52..ec53159f 100644
--- a/mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html
+++ b/mediagoblin/templates/mediagoblin/bits/frontpage_welcome.html
@@ -44,7 +44,7 @@
{%- endtrans %}
</div>
<div class="four columns offset-by-one">
- <img class="welcomeimage" src="/mgoblin_static/images/home_goblin.png">
+ <img class="welcomeimage" src="{{ request.staticdirect('/images/home_goblin.png') }}">
</div>
</div>
<div class="clear"></div>
diff --git a/mediagoblin/templates/mediagoblin/edit/attachments.html b/mediagoblin/templates/mediagoblin/edit/attachments.html
index d1e33c47..84c9a02c 100644
--- a/mediagoblin/templates/mediagoblin/edit/attachments.html
+++ b/mediagoblin/templates/mediagoblin/edit/attachments.html
@@ -27,7 +27,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.edit.attachments',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
diff --git a/mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html b/mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html
new file mode 100644
index 00000000..f3b83e4e
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/edit/deauthorize_applications.html
@@ -0,0 +1,69 @@
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#}
+{%- extends "mediagoblin/base.html" %}
+
+{% block title -%}
+ {% trans -%}
+ Deauthorize applications
+ {%- endtrans %} &mdash; {{ super() }}
+{%- endblock %}
+
+{% block mediagoblin_content %}
+ <h2>{% trans -%}Deauthorize Applications{%- endtrans %}</h2>
+ <p>{% trans -%}
+ These applications can access your GNU MediaGoblin account. Deauthorizing the
+ application will prevent the application from accessing your account.
+ {%- endtrans %}
+ </p>
+
+ <form method="POST" action="{{ request.urlgen('mediagoblin.edit.deauthorize_applications') }}">
+ {{ csrf_token }}
+ {% if not applications %}
+ <em>{% trans -%}There are no applications authorized.{%- endtrans %}</em>
+ {% endif %}
+ {% for application, access in applications %}
+ <div class="application">
+ <div class="application-button">
+ <button class="button_action" name="application" value="{{ access.token }}">Deauthorize</button>
+ </div>
+ {% if application.get_client.logo_url %}
+ <img class="application-icon" src="{{ application.get_client.logo_url }}">
+ {% else %}
+ <img class="application-icon" src="{{ request.staticdirect('/images/small-gavroche.png') }}">
+ {% endif %}
+ <div class="application-content">
+ <strong>{{ application.get_client.application_name }}</strong>
+ <p class="application-data">
+ <small>
+ {% trans -%}Type:{%- endtrans %}
+ &nbsp;
+ {{ application.get_client.application_type }}</small>
+ <br />
+ <small>
+ {% trans -%}Authorized:{%- endtrans %}
+ &nbsp;
+ {%- trans formatted_time=timesince(access.created) -%}
+ {{ formatted_time }} ago
+ {%- endtrans -%}
+ </small>
+ </p>
+ </div>
+ </div>
+ {% endfor %}
+ </form>
+{% endblock %} \ No newline at end of file
diff --git a/mediagoblin/templates/mediagoblin/edit/edit.html b/mediagoblin/templates/mediagoblin/edit/edit.html
index 9a040095..5f2ba3c5 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit.html
@@ -28,7 +28,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.edit.edit_media',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box_xl edit_box">
diff --git a/mediagoblin/templates/mediagoblin/edit/edit_account.html b/mediagoblin/templates/mediagoblin/edit/edit_account.html
index 574fe459..14a66482 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit_account.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit_account.html
@@ -53,7 +53,10 @@
<a href="{{ request.urlgen('mediagoblin.edit.delete_account') }}">
{%- trans %}Delete my account{% endtrans -%}
</a>
- &middot;
+ <br />
+ <a href="{{ request.urlgen('mediagoblin.edit.deauthorize_applications') }}">
+ {%- trans %}Deauthorize applications{% endtrans -%}
+ </a>
{% template_hook("edit_link") %}
<a href="{{ request.urlgen('mediagoblin.edit.email') }}">
{% trans %}Email{% endtrans %}
diff --git a/mediagoblin/templates/mediagoblin/edit/edit_collection.html b/mediagoblin/templates/mediagoblin/edit/edit_collection.html
index 5cf5bae8..f150b306 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit_collection.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit_collection.html
@@ -22,7 +22,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.edit.edit_collection',
- user= collection.get_creator.username,
+ user= collection.get_actor.username,
collection= collection.slug) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box_xl edit_box">
@@ -36,4 +36,4 @@
</div>
</form>
-{% endblock %}
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/extra_head.html b/mediagoblin/templates/mediagoblin/extra_head.html
index 847cfcc7..973e2b48 100644
--- a/mediagoblin/templates/mediagoblin/extra_head.html
+++ b/mediagoblin/templates/mediagoblin/extra_head.html
@@ -17,19 +17,3 @@
-#}
{# Add extra head declarations here for your theme, if appropriate #}
-
-<script type="text/javascript"
- src="{{request.staticdirect('extlib/tinymce/js/tinymce/tinymce.min.js')}}"></script>
-
- <script type="text/javascript">
- tinyMCE.init({
- selector: "div.blog_form_field_input textarea",
- height: 300,
- width: 800,
- plugins: [
- "advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
- "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
- "save table contextmenu directionality emoticons template paste textcolor"
- ]
- })
-</script>
diff --git a/mediagoblin/templates/mediagoblin/federation/host-meta.xml b/mediagoblin/templates/mediagoblin/federation/host-meta.xml
new file mode 100644
index 00000000..7970a0d2
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/federation/host-meta.xml
@@ -0,0 +1,22 @@
+{# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+-#}
+<?xml version='1.0' encoding='UTF-8'?>
+<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
+ {% for link in links %}
+ <Link rel="{{ link.rel }}" href="{{ link.href }}" />
+ {% endfor %}
+</XRD> \ No newline at end of file
diff --git a/mediagoblin/templates/mediagoblin/fragments/header_notifications.html b/mediagoblin/templates/mediagoblin/fragments/header_notifications.html
index 55759a39..58960e7a 100644
--- a/mediagoblin/templates/mediagoblin/fragments/header_notifications.html
+++ b/mediagoblin/templates/mediagoblin/fragments/header_notifications.html
@@ -4,9 +4,10 @@
<h3>{% trans %}New comments{% endtrans %}</h3>
<ul>
{% for notification in notifications %}
- {% set comment = notification.subject %}
- {% set comment_author = comment.get_author %}
- {% set media = comment.get_entry %}
+ {% set comment_wrapper = notification.obj() %}
+ {% set comment_object = comment_wrapper.comment() %}
+ {% set comment_author = comment_object.get_actor %}
+ {% set comment_target = comment_wrapper.target() %}
<li class="comment_wrapper">
<div class="comment_author">
<img src="{{ request.staticdirect('/images/icon_comment.png') }}" />
@@ -16,12 +17,12 @@
{{- comment_author.username -}}
</a>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
- comment=comment.id,
- user=media.get_uploader.username,
- media=media.slug_or_id) }}#comment"
+ comment=comment_wrapper.id,
+ user=comment_target.get_actor.username,
+ media=comment_target.slug_or_id) }}#comment"
class="comment_whenlink">
- <span title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
- {%- trans formatted_time=timesince(comment.created) -%}
+ <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
+ {%- trans formatted_time=timesince(comment_object.created) -%}
{{ formatted_time }} ago
{%- endtrans -%}
</span>
@@ -29,14 +30,14 @@
</div>
<div class="comment_content">
{% autoescape False -%}
- {{ comment.content_html }}
+ {{ comment_object.content_html }}
{%- endautoescape %}
</div>
</li>
{% endfor %}
</ul>
- <a href="{{ request.urlgen('mediagoblin.notifications.mark_all_comment_notifications_seen') }}?next={{
+ <a href="{{ request.urlgen('mediagoblin.notifications.mark_all_comment_notifications_seen') }}?next={{
request.base_url|urlencode }}" id="mark_all_comments_seen">
{% trans %}Mark all read{% endtrans %}
</a>
diff --git a/mediagoblin/templates/mediagoblin/media_displays/ascii.html b/mediagoblin/templates/mediagoblin/media_displays/ascii.html
index 3cc5e0ab..7cef5e80 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/ascii.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/ascii.html
@@ -19,13 +19,15 @@
{% extends 'mediagoblin/user_pages/media.html' %}
{% block mediagoblin_media %}
- <div class="ascii-wrapper">
- <pre>
- {%- autoescape False -%}
- {{- request.app.public_store.get_file(
- media.media_files['unicode']).read()|string -}}
- {%- endautoescape -%}
- </pre>
+ <div class="media_image_container">
+ <div class="ascii-wrapper">
+ <pre>
+ {%- autoescape False -%}
+ {{- request.app.public_store.get_file(
+ media.media_files['unicode']).read().decode('utf-8')|string -}}
+ {%- endautoescape -%}
+ </pre>
+ </div>
</div>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/audio.html b/mediagoblin/templates/mediagoblin/media_displays/audio.html
index 95bc6e88..7571f863 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/audio.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/audio.html
@@ -22,33 +22,33 @@
{{ super() }}
<link rel="stylesheet" type="text/css" href="{{ request.staticdirect('/css/audio.css') }}" />
<script type="text/javascript" src="{{ request.staticdirect(
- '/js/extlib/html5slider.js') }}"></script>
- <script type="text/javascript" src="{{ request.staticdirect(
'/js/audio.js') }}"></script>
{% endblock %}
{% block mediagoblin_media %}
- <div class="audio-media">
- {% if 'spectrogram' in media.media_files %}
- <div class="audio-spectrogram">
- <img src="{{ request.app.public_store.file_url(
- media.media_files.spectrogram) }}"
- alt="Spectrogram" />
- </div>
- {% endif %}
- <audio class="audio-player" controls="controls"
- preload="metadata">
- <source src="{{ request.app.public_store.file_url(
- media.media_files.webm_audio) }}" type="audio/webm; codecs=vorbis" />
- <div class="no_html5">
- {%- trans -%}Sorry, this audio will not work because
- your web browser does not support HTML5
- audio.{%- endtrans -%}<br/>
- {%- trans -%}You can get a modern web browser that
- can play the audio at <a href="http://getfirefox.com">
- http://getfirefox.com</a>!{%- endtrans -%}
- </div>
- </audio>
+ <div class="media_other_container">
+ <div class="audio-media">
+ {% if 'spectrogram' in media.media_files %}
+ <div class="audio-spectrogram">
+ <img src="{{ request.app.public_store.file_url(
+ media.media_files.spectrogram) }}"
+ alt="Spectrogram" />
+ </div>
+ {% endif %}
+ <audio class="audio-player" controls="controls"
+ preload="metadata">
+ <source src="{{ request.app.public_store.file_url(
+ media.media_files.webm_audio) }}" type="audio/webm; codecs=vorbis" />
+ <div class="no_html5">
+ {%- trans -%}Sorry, this audio will not work because
+ your web browser does not support HTML5
+ audio.{%- endtrans -%}<br/>
+ {%- trans -%}You can get a modern web browser that
+ can play the audio at <a href="http://getfirefox.com">
+ http://getfirefox.com</a>!{%- endtrans -%}
+ </div>
+ </audio>
+ </div>
</div>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/blogpost.html b/mediagoblin/templates/mediagoblin/media_displays/blogpost.html
index ca3441b9..4b0f53a6 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/blogpost.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/blogpost.html
@@ -23,9 +23,10 @@
{% endblock %}
{% block mediagoblin_media %}
-<h1> {{media.title}}</h1>
-<p>{{media.description|safe}}</p>
-
+<div class="media_other_container">
+ <h1> {{media.title}}</h1>
+ <p>{{media.description|safe}}</p>
+</div>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/pdf.html b/mediagoblin/templates/mediagoblin/media_displays/pdf.html
index a615cba6..b39dad50 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/pdf.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/pdf.html
@@ -46,21 +46,23 @@
{%- endblock %}
{% block mediagoblin_media %}
- {% if pdf_js %}
- <iframe width="640px" height="480px"
- src="{{ request.staticdirect('/extlib/pdf.js/web/viewer.html') }}?file={{ pdf_view }} ">
- </iframe>
- {% else %}
- <a href="{{ pdf_view }}">
- <img id="medium"
- class="media_image"
- src="{{ medium_view }}"
- alt="
- {%- trans media_title=media.title -%}
- Image for {{ media_title}}
- {%- endtrans %}"/>
- </a>
- {% endif %}
+ <div class="media_other_container">
+ {% if pdf_js %}
+ <iframe width="640px" height="480px"
+ src="{{ request.staticdirect('/extlib/pdf.js/web/viewer.html') }}?file={{ pdf_view }} ">
+ </iframe>
+ {% else %}
+ <a href="{{ pdf_view }}">
+ <img id="medium"
+ class="media_image"
+ src="{{ medium_view }}"
+ alt="
+ {%- trans media_title=media.title -%}
+ Image for {{ media_title}}
+ {%- endtrans %}"/>
+ </a>
+ {% endif %}
+ </div>
{% endblock %}
{% block mediagoblin_sidebar %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/stl.html b/mediagoblin/templates/mediagoblin/media_displays/stl.html
index ca0479ce..a95a1845 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/stl.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/stl.html
@@ -107,7 +107,8 @@ window.show_things = function () {
src="{{ front_view }}"
alt="{% trans media_title=media.title -%}
Image for {{ media_title }}{% endtrans %}" />
-<div id="thingy_view" style="width:640px;height:640px;"></div>
+<!--<div id="thingy_view" style="width:640px;height:640px;"></div>-->
+<div id="thingy_view"></div>
</div>
@@ -146,4 +147,5 @@ window.show_things = function () {
<p>{{ media.media_data.file_type }}</p>
<h3>{% trans %}Object Height{% endtrans %}</h3>
<p>~{{ media.media_data.height|int }} mm</p>
+{% template_hook("stl_sideinfo") %}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/video.html b/mediagoblin/templates/mediagoblin/media_displays/video.html
index 9386ffcf..5aac3529 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/video.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/video.html
@@ -46,6 +46,7 @@
{%- endblock %}
{% block mediagoblin_media %}
+<div class="media_other_container">
{% set display_type, display_path = media.get_display_media() %}
<video controls
@@ -63,11 +64,12 @@
{%- trans -%}Sorry, this video will not work because
your web browser does not support HTML5
video.{%- endtrans -%}<br/>
- {%- trans -%}You can get a modern web browser that
- can play this video at <a href="http://getfirefox.com">
- http://getfirefox.com</a>!{%- endtrans -%}
+ {%- trans -%}
+ We recommend you install a <a href="https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats">freedom-respecting browser which supports free formats</a>!
+ {%- endtrans -%}
</div>
</video>
+</div>
{% endblock %}
{% block mediagoblin_sidebar %}
diff --git a/mediagoblin/templates/mediagoblin/moderation/media_panel.html b/mediagoblin/templates/mediagoblin/moderation/media_panel.html
index 3c929d4f..94d4a1a0 100644
--- a/mediagoblin/templates/mediagoblin/moderation/media_panel.html
+++ b/mediagoblin/templates/mediagoblin/moderation/media_panel.html
@@ -35,22 +35,32 @@
{% if processing_entries.count() %}
<table class="media_panel processing">
<tr>
- <th>ID</th>
- <th>User</th>
- <th>Title</th>
- <th>When submitted</th>
- <th>Transcoding progress</th>
+ <th>{% trans %}ID{% endtrans %}</th>
+ <th>{% trans %}User{% endtrans %}</th>
+ <th>{% trans %}Title{% endtrans %}</th>
+ <th>{% trans %}When submitted{% endtrans %}</th>
+ <th>{% trans %}Transcoding progress{% endtrans %}</th>
</tr>
{% for media_entry in processing_entries %}
<tr>
+ <td>
+ <div class="thumb-wrapper">
+ <img src="{{ media_entry.thumb_url }}" alt="{{ media_entry.title }}" />
+ <div class="thumb-overlay-status thumb-processing">Processing...</div>
+ </div>
+ </td>
<td>{{ media_entry.id }}</td>
- <td>{{ media_entry.get_uploader.username }}</td>
+ <td>
+ <a href="{{ request.urlgen('mediagoblin.moderation.users_detail', user=media_entry.get_actor.username) }}">
+ {{ media_entry.get_actor.username }}
+ </a>
+ </td>
<td>{{ media_entry.title }}</td>
<td>{{ media_entry.created.strftime("%F %R") }}</td>
{% if media_entry.transcoding_progress %}
<td>{{ media_entry.transcoding_progress }}%</td>
{% else %}
- <td>Unknown</td>
+ <td>{% trans %}Unknown{% endtrans %}</td>
{% endif %}
</tr>
{% endfor %}
@@ -64,17 +74,17 @@
<table class="media_panel failed">
<tr>
- <th>ID</th>
- <th>User</th>
- <th>Title</th>
- <th>When submitted</th>
- <th>Reason for failure</th>
- <th>Failure metadata</th>
+ <th>{% trans %}ID{% endtrans %}</th>
+ <th>{% trans %}User{% endtrans %}</th>
+ <th>{% trans %}Title{% endtrans %}</th>
+ <th>{% trans %}When submitted{% endtrans %}</th>
+ <th>{% trans %}Reason for failure{% endtrans %}</th>
+ <th>{% trans %}Failure metadata{% endtrans %}</th>
</tr>
{% for media_entry in failed_entries %}
<tr>
<td>{{ media_entry.id }}</td>
- <td>{{ media_entry.get_uploader.username }}</td>
+ <td>{{ media_entry.get_actor.username }}</td>
<td>{{ media_entry.title }}</td>
<td>{{ media_entry.created.strftime("%F %R") }}</td>
{% if media_entry.get_fail_exception() %}
@@ -95,15 +105,15 @@
<table class="media_panel processed">
<tr>
- <th>ID</th>
- <th>User</th>
- <th>Title</th>
- <th>Submitted</th>
+ <th>{% trans %}ID{% endtrans %}</th>
+ <th>{% trans %}User{% endtrans %}</th>
+ <th>{% trans %}Title{% endtrans %}</th>
+ <th>{% trans %}Submitted{% endtrans %}</th>
</tr>
{% for media_entry in processed_entries %}
<tr>
<td>{{ media_entry.id }}</td>
- <td>{{ media_entry.get_uploader.username }}</td>
+ <td>{{ media_entry.get_actor.username }}</td>
<td><a href="{{ media_entry.url_for_self(request.urlgen) }}">{{ media_entry.title }}</a></td>
<td><span title='{{ media_entry.created.strftime("%F %R") }}'>{{ timesince(media_entry.created) }}</span></td>
</tr>
diff --git a/mediagoblin/templates/mediagoblin/moderation/report.html b/mediagoblin/templates/mediagoblin/moderation/report.html
index 6984625e..abbd4a0c 100644
--- a/mediagoblin/templates/mediagoblin/moderation/report.html
+++ b/mediagoblin/templates/mediagoblin/moderation/report.html
@@ -33,25 +33,26 @@
{% trans %}Return to Reports Panel{% endtrans %}</a>
</div>
<h2>{% trans %}Report{% endtrans %} #{{ report.id }}</h2>
- {% if report.is_comment_report() and report.comment %}
+ {% if report.is_comment_report() and report.object_id %}
{% trans %}Reported comment{% endtrans %}:
- {% set comment = report.comment %}
- {% set reported_user = comment.get_author %}
+ {% set comment = report.obj() %}
+ {% set target = report.obj().get_reply_to() %}
+ {% set reported_user = comment.get_actor %}
<div id="comment-{{ comment.id }}"
class="comment_wrapper">
<div class="comment_author">
<img src="{{ request.staticdirect('/images/icon_comment.png') }}" />
<a href="{{ request.urlgen('mediagoblin.moderation.users_detail',
- user=comment.get_author.username) }}"
+ user=comment.get_actor.username) }}"
class="comment_authorlink">
{{- reported_user.username -}}
</a>
<a href="{{ request.urlgen(
'mediagoblin.user_pages.media_home.view_comment',
comment=comment.id,
- user=comment.get_media_entry.get_uploader.username,
- media=comment.get_media_entry.slug_or_id) }}#comment"
+ user=target.get_actor.username,
+ media=target.slug_or_id) }}#comment"
class="comment_whenlink">
<span title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
{%- trans formatted_time=timesince(comment.created) -%}
@@ -65,16 +66,16 @@
{% endautoescape %}
</div>
</div>
- {% elif report.is_media_entry_report() and report.media_entry %}
+ {% elif report.is_media_entry_report() and report.object_id %}
- {% set media_entry = report.media_entry %}
+ {% set media_entry = report.obj() %}
<div class="three columns media_thumbnail">
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user=media_entry.get_uploader.username,
+ user=media_entry.get_actor.username,
media=media_entry.slug_or_id) }}">
<img src="{{ media_entry.thumb_url}}"/></a>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user=media_entry.get_uploader.username,
+ user=media_entry.get_actor.username,
media=media_entry.slug_or_id) }}" class=thumb_entry_title>
{{ media_entry.title }}</a>
</div>
@@ -99,7 +100,7 @@
{% endtrans %}
</h2>
{% endif %}
- Reason for report:
+ {% trans %}Reason for report:{% endtrans %}
<div id="report-{{ report.id }}"
class="report_wrapper">
<div class="report_author">
@@ -127,14 +128,14 @@
{{ report.report_content }}
</div>
</div>
- {% if not report.is_archived_report() and
- not (report.reported_user.has_privilege('admin') and
+ {% if not report.is_archived_report() and
+ not (report.reported_user.has_privilege('admin') and
not request.user.has_privilege('admin')) %}
- <input type=button value="{% trans %}Resolve{% endtrans %}" id=open_resolution_form />
+ <input type=button class="button_action" value="{% trans %}Resolve{% endtrans %}" id=open_resolution_form />
<form action="" method="POST" id=resolution_form>
{{ wtforms_util.render_divs(form) }}
{{ csrf_token }}
- <input type=submit id="submit_this_report" value="{% trans %}Resolve This Report{% endtrans %}"/>
+ <input type=submit class="button_action_highlight" id="submit_this_report" value="{% trans %}Resolve This Report{% endtrans %}"/>
</form>
<script>
$(document).ready(function() {
diff --git a/mediagoblin/templates/mediagoblin/moderation/report_panel.html b/mediagoblin/templates/mediagoblin/moderation/report_panel.html
index 39ca90f5..c82cd412 100644
--- a/mediagoblin/templates/mediagoblin/moderation/report_panel.html
+++ b/mediagoblin/templates/mediagoblin/moderation/report_panel.html
@@ -81,7 +81,7 @@ curr_page !=p %}
</tr>
{% for report in report_list %}
<tr>
- {% if report.discriminator == "comment_report" %}
+ {% if report.is_comment_report %}
<td>
<img
src="{{ request.staticdirect(
@@ -97,7 +97,7 @@ curr_page !=p %}
{% endtrans %}
</a>
</td>
- {% elif report.discriminator == "media_report" %}
+ {% elif report.is_media_entry_report %}
<td>
<img
src="{{ request.staticdirect(
diff --git a/mediagoblin/templates/mediagoblin/moderation/user.html b/mediagoblin/templates/mediagoblin/moderation/user.html
index 37e7eee9..1e48bf84 100644
--- a/mediagoblin/templates/mediagoblin/moderation/user.html
+++ b/mediagoblin/templates/mediagoblin/moderation/user.html
@@ -125,9 +125,9 @@
</a>
</td>
<td>
- {% if report.discriminator == "comment_report" %}
+ {% if report.is_comment_report() %}
<a>{%- trans %}Reported Comment{% endtrans -%}</a>
- {% elif report.discriminator == "media_report" %}
+ {% elif report.is_media_entry_report() %}
<a>{%- trans %}Reported Media Entry{% endtrans -%}</a>
{% endif %}
</td>
@@ -175,7 +175,7 @@
{% for privilege in privileges %}
<tr>
<td>{{ privilege.privilege_name }}</td>
- {% if privilege in user.all_privileges %}
+ {% if user.has_privilege(privilege.privilege_name) %}
<td class="user_with_privilege">
{% trans %}Yes{% endtrans %}{% else %}
<td class="user_without_privilege">
@@ -183,7 +183,7 @@
</td>
{% if request.user.has_privilege('admin') %}
<td>
- {% if privilege in user.all_privileges %}
+ {% if user.has_privilege(privilege.privilege_name) %}
<input type=submit id="{{ privilege.privilege_name }}"
class="submit_button button_action"
value =" -" />
diff --git a/mediagoblin/templates/mediagoblin/user_pages/activity.html b/mediagoblin/templates/mediagoblin/user_pages/activity.html
new file mode 100644
index 00000000..14377a48
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/user_pages/activity.html
@@ -0,0 +1,42 @@
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#}
+{%- extends "mediagoblin/base.html" %}
+
+{% block mediagoblin_head %}
+ {% template_hook("media_head") %}
+{% endblock mediagoblin_head %}
+
+{% block mediagoblin_content %}
+<div class="media_pane eleven columns">
+ <h2 class="media_title">
+ {% if activity.title %}{{ activity.title }}{% endif %}
+ </h2>
+ {% autoescape False %}
+ <p> {{ activity.content }} </p>
+ {% endautoescape %}
+
+ <div class="media_sidebar">
+ {% block mediagoblin_after_added_sidebar %}
+ <a href="{{ activity.url(request) }}"
+ class="button_action"
+ id="button_reportmedia">
+ View {{ activity.get_object.object_type }}
+ </a>
+ {% endblock %}
+ </div>
+{% endblock %} \ No newline at end of file
diff --git a/mediagoblin/templates/mediagoblin/user_pages/blog_media.html b/mediagoblin/templates/mediagoblin/user_pages/blog_media.html
index c6eedee0..261b21e7 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/blog_media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/blog_media.html
@@ -37,8 +37,8 @@
<p class="context">
{%- trans user_url=request.urlgen(
'mediagoblin.user_pages.user_home',
- user=media.get_uploader.username),
- username=media.get_uploader.username -%}
+ user=media.get_actor.username),
+ username=media.get_actor.username -%}
â– Blog post by <a href="{{user_url}}">{{username}}</a>
{%- endtrans -%}
</p>
@@ -68,14 +68,14 @@
{% endblock %}
</div>
{% if request.user and
- (media.uploader == request.user.id or
+ (media.actor == request.user.id or
request.user.has_privilege('admin')) %}
- {% set edit_url = request.urlgen('mediagoblin.media_types.blog.blogpost.edit',
- blog_slug=media.media_manager.get_blog_by_blogpost().slug,
+ {% set edit_url = request.urlgen('mediagoblin.media_types.blog.blogpost.edit',
+ blog_slug=media.media_manager.get_blog_by_blogpost().slug,
user=request.user.username, blog_post_slug=media.slug) %}
<a class="button_action" href="{{ edit_url }}">{% trans %}Edit{% endtrans %}</a>
{% set delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) %}
<a class="button_action" href="{{ delete_url }}">{% trans %}Delete{% endtrans %}</a>
@@ -96,7 +96,7 @@
{% endif %}
{% if request.user %}
<form action="{{ request.urlgen('mediagoblin.user_pages.media_post_comment',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) }}" method="POST" id="form_comment">
{{ wtforms_util.render_divs(comment_form) }}
<div class="form_submit_buttons">
@@ -107,7 +107,8 @@
{% endif %}
<ul style="list-style:none">
{% for comment in comments %}
- {% set comment_author = comment.get_author %}
+ {% set comment_object = comment.comment() %}
+ {% set comment_author = comment_object.get_actor %}
<li id="comment-{{ comment.id }}"
{%- if pagination.active_id == comment.id %}
class="comment_wrapper comment_active">
@@ -124,18 +125,18 @@
</a>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
comment=comment.id,
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}#comment"
class="comment_whenlink">
- <span title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
- {%- trans formatted_time=timesince(comment.created) -%}
+ <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
+ {%- trans formatted_time=timesince(comment_object.created) -%}
{{ formatted_time }} ago
{%- endtrans -%}
</span></a>:
</div>
<div class="comment_content">
{% autoescape False -%}
- {{ comment.content_html }}
+ {{ comment_object.content_html }}
{%- endautoescape %}
</div>
</li>
@@ -148,7 +149,7 @@
<div class="media_sidebar">
<h3>{% trans %}Added{% endtrans %}</h3>
<p><span title="{{ media.created.strftime("%I:%M%p %Y-%m-%d") }}">
- {%- trans formatted_time=timesince(media.created) -%}
+ {%- trans formatted_time=timesince(media.created) -%}
{{ formatted_time }} ago
{%- endtrans -%}
</span></p>
diff --git a/mediagoblin/templates/mediagoblin/user_pages/collection.html b/mediagoblin/templates/mediagoblin/user_pages/collection.html
index 0f712c01..71ba4451 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/collection.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/collection.html
@@ -44,14 +44,14 @@
{{ collection_title }} by <a href="{{ user_url }}">{{ username }}</a>
{%- endtrans %}
</h1>
- {% if request.user and (collection.creator == request.user.id or
+ {% if request.user and (collection.actor == request.user.id or
request.user.has_privilege('admin')) %}
{% set edit_url = request.urlgen('mediagoblin.edit.edit_collection',
- user=collection.get_creator.username,
+ user=collection.get_actor.username,
collection=collection.slug) %}
<a class="button_action" href="{{ edit_url }}">{% trans %}Edit{% endtrans %}</a>
{% set delete_url = request.urlgen('mediagoblin.user_pages.collection_confirm_delete',
- user=collection.get_creator.username,
+ user=collection.get_actor.username,
collection=collection.slug) %}
<a class="button_action" href="{{ delete_url }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
index 8cfe4b29..08278349 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
@@ -30,7 +30,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.user_pages.collection_confirm_delete',
- user=collection.get_creator.username,
+ user=collection.get_actor.username,
collection=collection.slug) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
@@ -39,9 +39,9 @@
Really delete collection: {{ title }}?
{%- endtrans %}
</h1>
-
+
<br />
-
+
<p class="delete_checkbox_box">
{{ form.confirm }}
{{ wtforms_util.render_label(form.confirm) }}
@@ -58,4 +58,4 @@
</div>
</div>
</form>
-{% endblock %}
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html b/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html
index 84d3eb4c..d7ff4950 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html
@@ -20,7 +20,7 @@
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
{% block title %}
- {%- trans media_title=collection_item.get_media_entry.title,
+ {%- trans media_title=collection_item.get_object().title,
collection_title=collection_item.in_collection.title -%}
Remove {{ media_title }} from {{ collection_title }}
{%- endtrans %} &mdash; {{ super() }}
@@ -30,20 +30,20 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.user_pages.collection_item_confirm_remove',
- user=collection_item.in_collection.get_creator.username,
+ user=collection_item.in_collection.get_actor.username,
collection=collection_item.in_collection.slug,
collection_item=collection_item.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
<h1>
- {%- trans media_title=collection_item.get_media_entry.title,
+ {%- trans media_title=collection_item.get_object().title,
collection_title=collection_item.in_collection.title -%}
Really remove {{ media_title }} from {{ collection_title }}?
{%- endtrans %}
</h1>
<div style="text-align: center;" >
- <img src="{{ collection_item.get_media_entry.thumb_url }}" />
+ <img src="{{ collection_item.get_object().thumb_url }}" />
</div>
<br />
@@ -64,4 +64,4 @@
</div>
</div>
</form>
-{% endblock %}
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 0b2ae898..ce19717f 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -29,7 +29,10 @@
src="{{ request.staticdirect('/js/comment_show.js') }}"></script>
<script type="text/javascript"
src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
+ <script type="text/javascript"
+ src="{{ request.staticdirect('/js/post_comment.js') }}"></script>
+ {% template_hook("location_head") %}
{% template_hook("media_head") %}
{% endblock mediagoblin_head %}
{% block mediagoblin_content %}
@@ -37,8 +40,8 @@
<p class="eleven columns context">
{%- trans user_url=request.urlgen(
'mediagoblin.user_pages.user_home',
- user=media.get_uploader.username),
- username=media.get_uploader.username -%}
+ user=media.get_actor.username),
+ username=media.get_actor.username -%}
â– Browsing media by <a href="{{user_url}}">{{username}}</a>
{%- endtrans -%}
</p>
@@ -47,8 +50,8 @@
</div>
</div>
<div class="media_pane eleven columns">
- <div class="media_image_container">
- {% block mediagoblin_media %}
+ {% block mediagoblin_media %}
+ <div class="media_image_container">
{% set display_media = request.app.public_store.file_url(
media.get_display_media()[1]) %}
{# if there's a medium file size, that means the medium size
@@ -68,22 +71,23 @@
alt="{% trans media_title=media.title -%}
Image for {{ media_title }}{% endtrans %}" />
{% endif %}
- {% endblock %}
- </div>
+ </div>
+ {% endblock %}
<div class="row head foot">
<h2 class="media_title">
{{ media.title }}
</h2>
+ {% template_hook("media_titleinfo") %}
{% if request.user and
- (media.uploader == request.user.id or
+ (media.actor == request.user.id or
request.user.has_privilege('admin')) %}
<div class="pull-right" style="padding-top:20px;">
{% set edit_url = request.urlgen('mediagoblin.edit.edit_media',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) %}
<a class="button_action" href="{{ edit_url }}">{% trans %}Edit{% endtrans %}</a>
{% set delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) %}
<a class="button_action button_warning" href="{{ delete_url }}">{% trans %}Delete{% endtrans %}</a>
</div>
@@ -92,7 +96,7 @@
<p>{{ media.description_html }}</p>
{% endautoescape %}
</div>
- {% if comments and request.user and request.user.has_privilege('commenter') %}
+ {% if request.user and request.user.has_privilege('commenter') %}
<div class="media_comments">
{% if app_config['allow_comments'] %}
<a
@@ -108,13 +112,14 @@
{% endif %}
{% if request.user %}
<form action="{{ request.urlgen('mediagoblin.user_pages.media_post_comment',
- user= media.get_uploader.username,
+ user= media.get_actor.username,
media_id=media.id) }}" method="POST" id="form_comment">
{{ wtforms_util.render_divs(comment_form) }}
<div class="form_submit_buttons">
<input type="submit" value="{% trans %}Add this comment{% endtrans %}" class="button_action" />
{{ csrf_token }}
</div>
+ <input type="hidden" value="{{ request.urlgen('mediagoblin.user_pages.media_post_comment', user= media.get_actor.username, media_id=media.id) }}" id="postCommentURL" />
<input type="hidden" value="{{ request.urlgen('mediagoblin.user_pages.media_preview_comment') }}" id="previewURL" />
<input type="hidden" value="{% trans %}Comment Preview{% endtrans %}" id="previewText"/>
</form>
@@ -122,7 +127,8 @@
{% endif %}
<ul style="list-style:none">
{% for comment in comments %}
- {% set comment_author = comment.get_author %}
+ {% set comment_object = comment.comment() %}
+ {% set comment_author = comment_object.get_actor %}
<li id="comment-{{ comment.id }}"
{%- if pagination.active_id == comment.id %}
class="comment_wrapper comment_active">
@@ -139,24 +145,24 @@
</a>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
comment=comment.id,
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}#comment"
class="comment_whenlink">
- <span title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
- {%- trans formatted_time=timesince(comment.created) -%}
+ <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
+ {%- trans formatted_time=timesince(comment_object.created) -%}
{{ formatted_time }} ago
{%- endtrans -%}
</span></a>:
</div>
<div class="comment_content">
{% autoescape False -%}
- {{ comment.content_html }}
+ {{ comment_object.content_html }}
{%- endautoescape %}
</div>
<div>
{% if app_config.allow_reporting %}
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.report_comment',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id,
comment=comment.id) }}">
{% trans %}Report{% endtrans %}</a>
@@ -214,14 +220,14 @@
{%- endif %}
{%- if app_config['allow_attachments']
and request.user
- and (media.uploader == request.user.id
+ and (media.actor == request.user.id
or request.user.has_privilege('admin')) %}
{%- if not media.attachment_files|count %}
<h3>{% trans %}Attachments{% endtrans %}</h3>
{%- endif %}
<p>
<a href="{{ request.urlgen('mediagoblin.edit.attachments',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media_id=media.id) }}">
{%- trans %}Add attachment{% endtrans -%}
</a>
@@ -231,6 +237,8 @@
{% block mediagoblin_sidebar %}
{% endblock %}
+ {%- set model = media %}
+ {% template_hook("location_info") %}
{% template_hook("media_sideinfo") %}
</div><!--end media_sidebar-->
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
index b4c9671c..ba7424d1 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
@@ -32,7 +32,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.user_pages.media_collect',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
@@ -70,4 +70,4 @@
</div>
</div>
</form>
-{% endblock %}
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
index c948ccec..243edff5 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
@@ -22,7 +22,7 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
@@ -51,4 +51,4 @@
</div>
</div>
</form>
-{% endblock %}
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
index 2a449d45..ee7b646a 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
@@ -17,6 +17,8 @@
#}
{% extends "mediagoblin/base.html" %}
+{% from "mediagoblin/utils/pagination.html" import render_pagination %}
+
{% block title -%}
{% trans %}Media processing panel{% endtrans %} &mdash; {{ super() }}
{%- endblock %}
@@ -28,20 +30,53 @@
<p>
{% trans %}You can track the state of media being processed for your gallery here.{% endtrans %}
</p>
-
-<h2>{% trans %}Media in-processing{% endtrans %}</h2>
-{% if processing_entries.count() %}
+<p>
+Show:
+<a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username) }}">All</a>,
+<a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username, state="processing") }}">In processing</a>,
+<a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username, state="failed") }}">Failed</a>,
+<a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
+ user=request.user.username, state="processed") }}">Successful</a>
+</p>
+
+{% if entries.count() %}
+ {{ render_pagination(request, pagination) }}
<table class="media_panel processing">
<tr>
- <th>ID</th>
+ <th width="210">Thumbnail</th>
<th>Title</th>
- <th>When submitted</th>
- <th>Transcoding progress</th>
+ <th width="20%">When submitted</th>
+ <th width="200">Transcoding progress</th>
</tr>
- {% for media_entry in processing_entries %}
+ {% for media_entry in entries %}
<tr>
- <td>{{ media_entry.id }}</td>
+ {% if media_entry.state == 'processed' %}
+ {% set entry_url = media_entry.url_for_self(request.urlgen) %}
+ <td>
+ <div class="thumb-wrapper">
+ <a href="{{ entry_url }}">
+ <img src="{{ media_entry.thumb_url }}" alt="{{ media_entry.title }}" />
+ </a>
+ </div>
+ </td>
+ <td><a href="{{ entry_url }}">{{ media_entry.title }}</a></td>
+ <td>{{ media_entry.created.strftime("%F %R") }}</td>
+ <td>Ready</td>
+ {% else %}
+ <td>
+ <div class="thumb-wrapper">
+ <img src="{{ media_entry.thumb_url }}" alt="{{ media_entry.title }}" />
+ {% if media_entry.state == 'processing' %}
+ <div class="thumb-overlay-status thumb-processing">Processing...</div>
+ {% elif media_entry.state == 'failed' %}
+ <div class="thumb-overlay-status thumb-failed">Failed!</div>
+ {% endif %}
+ </div>
+ </td>
<td>{{ media_entry.title }}</td>
<td>{{ media_entry.created.strftime("%F %R") }}</td>
{% if media_entry.transcoding_progress %}
@@ -49,61 +84,12 @@
{% else %}
<td>Unknown</td>
{% endif %}
+ {% endif %}
</tr>
{% endfor %}
</table>
+ {{ render_pagination(request, pagination) }}
{% else %}
- <p><em>{% trans %}No media in-processing{% endtrans %}</em></p>
+ <p><em>{% trans %}You have not uploaded anything yet!{% endtrans %}</em></p>
{% endif %}
-
-<h2>{% trans %}These uploads failed to process:{% endtrans %}</h2>
-{% if failed_entries.count() %}
-
- <table class="media_panel failed">
- <tr>
- <th>ID</th>
- <th>Title</th>
- <th>When submitted</th>
- <th>Reason for failure</th>
- <th>Failure metadata</th>
- </tr>
- {% for media_entry in failed_entries %}
- <tr>
- <td>{{ media_entry.id }}</td>
- <td>{{ media_entry.title }}</td>
- <td>{{ media_entry.created.strftime("%F %R") }}</td>
- {% if media_entry.get_fail_exception() %}
- <td>{{ media_entry.get_fail_exception().general_message }}</td>
- <td>{{ media_entry.fail_metadata }}</td>
- {% else %}
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- {% endif %}
- </tr>
- {% endfor %}
- </table>
-{% else %}
- <p><em>{% trans %}No failed entries!{% endtrans %}</em></p>
-{% endif %}
-
-<h2>{% trans %}Your last 10 successful uploads{% endtrans %}</h2>
-{% if processed_entries.count() %}
-
- <table class="media_panel processed">
- <tr>
- <th>ID</th>
- <th>Title</th>
- <th>Submitted</th>
- </tr>
- {% for entry in processed_entries %}
- <tr>
- <td>{{ entry.id }}</td>
- <td><a href="{{ entry.url_for_self(request.urlgen) }}">{{ entry.title }}</a></td>
- <td>{{ entry.created.strftime("%F %R") }}</td>
- </tr>
- {% endfor %}
- </table>
-{% else %}
- <p><em>{% trans %}No processed entries, yet!{% endtrans %}</em></p>
-{% endif %}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/report.html b/mediagoblin/templates/mediagoblin/user_pages/report.html
index ce0fb1bc..4a88f4b7 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/report.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/report.html
@@ -22,37 +22,31 @@
<form action="" method=POST >
{% if comment is defined %}
<h3>{% trans %}Reporting this Comment{% endtrans %}</h3>
- {%- set comment_author = comment.get_author %}
- {%- set comment_author_url = request.urlgen(
- 'mediagoblin.user_pages.user_home',
- user=comment_author.username) %}
- {%- set comment_url = request.urlgen(
- 'mediagoblin.user_pages.media_home.view_comment',
- comment=comment.id,
- user=media.get_uploader.username,
- media=media.slug_or_id) %}
+ {% set comment_object = comment.comment() %}
+ {% set comment_author = comment_object.get_actor %}
<div id="comment-{{ comment.id }}"
class="comment_wrapper">
<div class="comment_author">
- <img
- src="{{ request.staticdirect('/images/icon_comment.png') }}" />
- <a href="{{ comment_author_url }}"
+ <img src="{{ request.staticdirect('/images/icon_comment.png') }}" />
+ <a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
+ user=comment_author.username) }}"
class="comment_authorlink">
{{- comment_author.username -}}
</a>
- <a href="{{ comment_url }}"
+ <a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
+ comment=comment.id,
+ user=media.get_actor.username,
+ media=media.slug_or_id) }}#comment"
class="comment_whenlink">
- <span
- title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
-
- {%- trans formatted_time=timesince(comment.created) -%}
+ <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
+ {%- trans formatted_time=timesince(comment_object.created) -%}
{{ formatted_time }} ago
{%- endtrans -%}
</span></a>:
</div>
<div class="comment_content">
{% autoescape False -%}
- {{ comment.content_html }}
+ {{ comment_object.content_html }}
{%- endautoescape %}
</div>
</div>
@@ -60,17 +54,17 @@
<h3>{% trans %}Reporting this Media Entry{% endtrans %}</h3>
<div class="media_thumbnail">
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}">
<img src="{{ media.thumb_url }}"/></a>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class=thumb_entry_title>{{ media.title }}</a>
</div>
<div class=clear></div>
- {%- trans user_url = request.urlgen('mediagoblin.user_pages.user_home', user=media.get_uploader.username),
- username = media.get_uploader.username %}
+ {%- trans user_url = request.urlgen('mediagoblin.user_pages.user_home', user=media.get_actor.username),
+ username = media.get_actor.username %}
â– Published by <a href="{{ user_url }}"
class="comment_authorlink">{{ username }}</a>
{% endtrans %}
@@ -78,6 +72,6 @@
{{- wtforms_util.render_divs(form) }}
{{ csrf_token }}
- <input type=submit value="{% trans %}File Report {% endtrans %}" />
+ <input type=submit class="button_action" value="{% trans %}File Report {% endtrans %}" />
</form>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
index 51baa9bb..9ac96f80 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/user.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/user.html
@@ -46,7 +46,7 @@
{%- trans username=user.username %}{{ username }}'s profile{% endtrans -%}
</h1>
- {% if not user.url and not user.bio %}
+ {% if not user.url and not user.bio and not user.location %}
{% if request.user and (request.user.id == user.id) %}
<div class="profile_sidebar empty_space">
<p>
diff --git a/mediagoblin/templates/mediagoblin/utils/collection_gallery.html b/mediagoblin/templates/mediagoblin/utils/collection_gallery.html
index 64b30815..498aeb77 100644
--- a/mediagoblin/templates/mediagoblin/utils/collection_gallery.html
+++ b/mediagoblin/templates/mediagoblin/utils/collection_gallery.html
@@ -25,24 +25,27 @@
{%- if loop.first %} thumb_row_first
{%- elif loop.last %} thumb_row_last{% endif %}">
{% for item in row %}
- {% set media_entry = item.get_media_entry %}
- {% set entry_url = media_entry.url_for_self(request.urlgen) %}
+ {% set obj = item.get_object() %}
+ {% set obj_url = obj.url_for_self(request.urlgen) %}
<div class="three columns media_thumbnail thumb_entry
{%- if loop.first %} thumb_entry_first
{%- elif loop.last %} thumb_entry_last{% endif %}">
- <a href="{{ entry_url }}">
- <img src="{{ media_entry.thumb_url }}" />
+ <a href="{{ obj_url }}">
+ {% if obj.icon_url %}
+ <img class="entry_type_icon" src="{{ obj.icon_url }}" />
+ {% endif %}
+ <img src="{{ obj.thumb_url }}" />
</a>
{% if item.note %}
- <a href="{{ entry_url }}">{{ item.note }}</a>
+ <a href="{{ obj_url }}">{{ item.note }}</a>
{% endif %}
{% if request.user and
- (item.in_collection.creator == request.user.id or
+ (item.in_collection.actor == request.user.id or
request.user.has_privilege('admin')) %}
{%- set remove_url=request.urlgen(
'mediagoblin.user_pages.collection_item_confirm_remove',
- user=item.in_collection.get_creator.username,
+ user=item.in_collection.get_actor.username,
collection=item.in_collection.slug,
collection_item=item.id) -%}
<a href="{{ remove_url }}" class="remove">
diff --git a/mediagoblin/templates/mediagoblin/utils/collections.html b/mediagoblin/templates/mediagoblin/utils/collections.html
index 69738e26..5e209d60 100644
--- a/mediagoblin/templates/mediagoblin/utils/collections.html
+++ b/mediagoblin/templates/mediagoblin/utils/collections.html
@@ -26,15 +26,15 @@
{%- endif %}
<a href="{{ collection.url_for_self(request.urlgen) }}">
{{- collection.title }} (
- {{- collection.get_creator.username -}}
+ {{- collection.get_actor.username -}}
)</a>
{%- endfor %}
</p>
{%- endif %}
{%- if request.user %}
<p>
- <a type="submit" href="{{ request.urlgen('mediagoblin.user_pages.media_collect',
- user=media.get_uploader.username,
+ <a type="submit" href="{{ request.urlgen('mediagoblin.user_pages.media_collect',
+ user=media.get_actor.username,
media_id=media.id) }}"
class="button_action">
{% trans %}Add to a collection{% endtrans %}
diff --git a/mediagoblin/templates/mediagoblin/utils/comment-subscription.html b/mediagoblin/templates/mediagoblin/utils/comment-subscription.html
index 75da5e89..54663f05 100644
--- a/mediagoblin/templates/mediagoblin/utils/comment-subscription.html
+++ b/mediagoblin/templates/mediagoblin/utils/comment-subscription.html
@@ -19,15 +19,15 @@
{% set subscription = get_comment_subscription(request.user.id, media.id) %}
{% if not subscription or not subscription.notify %}
<a type="submit" href="{{ request.urlgen('mediagoblin.notifications.subscribe_comments',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id)}}"
- class="button_action">Subscribe to comments
+ class="button_action">{% trans %}Subscribe to comments{% endtrans %}
</a>
{% else %}
<a type="submit" href="{{ request.urlgen('mediagoblin.notifications.silence_comments',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id)}}"
- class="button_action">Silence comments
+ class="button_action">{% trans %}Silence comments{% endtrans %}
</a>
{% endif %}
{%- endif %}
diff --git a/mediagoblin/templates/mediagoblin/utils/object_gallery.html b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
index 1b4a15ed..57cd7c25 100644
--- a/mediagoblin/templates/mediagoblin/utils/object_gallery.html
+++ b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
@@ -30,10 +30,13 @@
{%- if loop.first %} thumb_entry_first
{%- elif loop.last %} thumb_entry_last{% endif %}">
<a href="{{ entry_url }}">
+ {% if entry.icon_url %}
+ <img class="entry_type_icon" src="{{ entry.icon_url }}" />
+ {% endif %}
<img src="{{ entry.thumb_url }}" />
</a>
{% if entry.title %}
- <a class="thumb_entry_title" href="{{ entry_url }}">{{ entry.title }}</a>
+ <a class="thumb_entry_title" href="{{ entry_url }}">{{ entry.title }}</a>
{% endif %}
</div>
{% endfor %}
@@ -72,5 +75,10 @@
{%- endtrans -%}
</i>
</p>
+ <p>
+ <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
+ {%- trans %}Add media{% endtrans -%}
+ </a>
+ </p>
{% endif %}
{% endmacro %}
diff --git a/mediagoblin/templates/mediagoblin/utils/prev_next.html b/mediagoblin/templates/mediagoblin/utils/prev_next.html
index 9e262ed9..fc8672fb 100644
--- a/mediagoblin/templates/mediagoblin/utils/prev_next.html
+++ b/mediagoblin/templates/mediagoblin/utils/prev_next.html
@@ -19,29 +19,36 @@
{# Provide navigation links to neighboring media entries, if possible #}
{% set prev_entry_url = media.url_to_prev(request.urlgen) %}
{% set next_entry_url = media.url_to_next(request.urlgen) %}
+{% if is_rtl %}
+ {% set next_arrow = "→" %}
+ {% set prev_arrow = "â†" %}
+{% else %}
+ {% set next_arrow = "â†" %}
+ {% set prev_arrow = "→" %}
+{% endif %}
{% if prev_entry_url or next_entry_url %}
<div class="navigation">
{# There are no previous entries for the very first media entry #}
{% if prev_entry_url %}
<a class="navigation_button navigation_left" href="{{ prev_entry_url }}">
- &larr; {% trans %}newer{% endtrans %}
+ {{next_arrow}} {% trans %}newer{% endtrans %}
</a>
{% else %}
{# This is the first entry. display greyed-out 'previous' image #}
<p class="navigation_button navigation_left">
- &larr; {% trans %}newer{% endtrans %}
+ {{next_arrow}} {% trans %}newer{% endtrans %}
</p>
{% endif %}
{# Likewise, this could be the very last media entry #}
{% if next_entry_url %}
<a class="navigation_button navigation_right" href="{{ next_entry_url }}">
- {% trans %}older{% endtrans %} &rarr;
+ {% trans %}older{% endtrans %} {{prev_arrow}}
</a>
{% else %}
{# This is the last entry. display greyed-out 'next' image #}
<p class="navigation_button navigation_right">
- {% trans %}older{% endtrans %} &rarr;
+ {% trans %}older{% endtrans %} {{prev_arrow}}
</p>
{% endif %}
</div>
diff --git a/mediagoblin/templates/mediagoblin/utils/profile.html b/mediagoblin/templates/mediagoblin/utils/profile.html
index 7a3af01c..5cc38487 100644
--- a/mediagoblin/templates/mediagoblin/utils/profile.html
+++ b/mediagoblin/templates/mediagoblin/utils/profile.html
@@ -16,6 +16,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
+{% block mediagoblin_head %}
+ {% template_hook("location_head") %}
+{% endblock mediagoblin_head %}
+
{% block profile_content -%}
{% if user.bio %}
{% autoescape False %}
@@ -27,4 +31,12 @@
<a href="{{ user.url }}">{{ user.url }}</a>
</p>
{% endif %}
+ {% if user.location %}
+ {%- set model = user %}
+ <h3>{% trans %}Location{% endtrans %}</h3>
+ {% if model.get_location.name %}
+ <p>{{ model.get_location.name }}</p>
+ {% endif %}
+ {% template_hook("location_info") %}
+ {% endif %}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/utils/report.html b/mediagoblin/templates/mediagoblin/utils/report.html
index 3829de97..8da2be7d 100644
--- a/mediagoblin/templates/mediagoblin/utils/report.html
+++ b/mediagoblin/templates/mediagoblin/utils/report.html
@@ -19,7 +19,7 @@
{% block report_content -%}
<p>
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.report_media',
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id) }}"
class="button_action" id="button_reportmedia" title="Report media">
{% trans %}Report media{% endtrans %}
diff --git a/mediagoblin/templates/mediagoblin/utils/tags.html b/mediagoblin/templates/mediagoblin/utils/tags.html
index bb4bd1a5..5fc5dd8f 100644
--- a/mediagoblin/templates/mediagoblin/utils/tags.html
+++ b/mediagoblin/templates/mediagoblin/utils/tags.html
@@ -28,17 +28,17 @@
<a href="{{ request.urlgen(
'mediagoblin.user_pages.user_tag_gallery',
tag=tag['slug'],
- user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
+ user=media.get_actor.username) }}">{{ tag['name'] }}</a>
{% elif loop.revindex == 2 %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.user_tag_gallery',
tag=tag['slug'],
- user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
+ user=media.get_actor.username) }}">{{ tag['name'] }}</a>
{% else %}
<a href="{{ request.urlgen(
'mediagoblin.user_pages.user_tag_gallery',
tag=tag['slug'],
- user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
+ user=media.get_actor.username) }}">{{ tag['name'] }}</a>
&middot;
{% endif %}
{% endfor %}
diff --git a/mediagoblin/tests/__init__.py b/mediagoblin/tests/__init__.py
index fbf3fc6c..651dac24 100644
--- a/mediagoblin/tests/__init__.py
+++ b/mediagoblin/tests/__init__.py
@@ -16,7 +16,7 @@
import pytest
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template
@@ -44,7 +44,7 @@ class MGClientTestCase:
fixture_add_user(username, **options)
def user(self, username):
- return User.query.filter(User.username == username).first()
+ return LocalUser.query.filter(LocalUser.username==username).first()
def _do_request(self, url, *context_keys, **kwargs):
template.clear_test_template_context()
diff --git a/mediagoblin/tests/media_tools.py b/mediagoblin/tests/media_tools.py
new file mode 100644
index 00000000..8d58c024
--- /dev/null
+++ b/mediagoblin/tests/media_tools.py
@@ -0,0 +1,61 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2013 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from contextlib import contextmanager
+import tempfile
+
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import Gst
+Gst.init(None)
+
+@contextmanager
+def create_av(make_video=False, make_audio=False):
+ 'creates audio/video in `path`, throws AssertionError on any error'
+ media = tempfile.NamedTemporaryFile(suffix='.ogg')
+ pipeline = Gst.Pipeline()
+ mux = Gst.ElementFactory.make('oggmux', 'mux')
+ pipeline.add(mux)
+ if make_video:
+ video_src = Gst.ElementFactory.make('videotestsrc', 'video_src')
+ video_src.set_property('num-buffers', 20)
+ video_enc = Gst.ElementFactory.make('theoraenc', 'video_enc')
+ pipeline.add(video_src)
+ pipeline.add(video_enc)
+ assert video_src.link(video_enc)
+ assert video_enc.link(mux)
+ if make_audio:
+ audio_src = Gst.ElementFactory.make('audiotestsrc', 'audio_src')
+ audio_src.set_property('num-buffers', 20)
+ audio_enc = Gst.ElementFactory.make('vorbisenc', 'audio_enc')
+ pipeline.add(audio_src)
+ pipeline.add(audio_enc)
+ assert audio_src.link(audio_enc)
+ assert audio_enc.link(mux)
+ sink = Gst.ElementFactory.make('filesink', 'sink')
+ sink.set_property('location', media.name)
+ pipeline.add(sink)
+ mux.link(sink)
+ pipeline.set_state(Gst.State.PLAYING)
+ state = pipeline.get_state(Gst.SECOND)
+ assert state[0] == Gst.StateChangeReturn.SUCCESS
+ bus = pipeline.get_bus()
+ message = bus.timed_pop_filtered(
+ Gst.SECOND, # one second should be more than enough for 50-buf vid
+ Gst.MessageType.ERROR | Gst.MessageType.EOS)
+ assert message.type == Gst.MessageType.EOS
+ pipeline.set_state(Gst.State.NULL)
+ yield media.name
diff --git a/mediagoblin/tests/starttls_config.ini b/mediagoblin/tests/starttls_config.ini
new file mode 100644
index 00000000..1e290202
--- /dev/null
+++ b/mediagoblin/tests/starttls_config.ini
@@ -0,0 +1,4 @@
+[mediagoblin]
+email_debug_mode = false
+email_smtp_force_starttls = true
+email_smtp_host = someplace.com
diff --git a/mediagoblin/tests/test_api.py b/mediagoblin/tests/test_api.py
index 4e0cbd8f..90873cb9 100644
--- a/mediagoblin/tests/test_api.py
+++ b/mediagoblin/tests/test_api.py
@@ -13,81 +13,655 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import json
-
-import logging
-import base64
-
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
import pytest
+from webtest import AppError
+
+from .resources import GOOD_JPG
from mediagoblin import mg_globals
-from mediagoblin.tools import template, pluginapi
+from mediagoblin.db.models import User, Activity, MediaEntry, TextComment
+from mediagoblin.tools.routing import extract_url_arguments
from mediagoblin.tests.tools import fixture_add_user
-from .resources import GOOD_JPG, GOOD_PNG, EVIL_FILE, EVIL_JPG, EVIL_PNG, \
- BIG_BLUE
+from mediagoblin.moderation.tools import take_away_privileges
+
+class TestAPI(object):
+ """ Test mediagoblin's pump.io complient APIs """
+ @pytest.fixture(autouse=True)
+ def setup(self, test_app):
+ self.test_app = test_app
+ self.db = mg_globals.database
-_log = logging.getLogger(__name__)
+ self.user = fixture_add_user(privileges=[u'active', u'uploader', u'commenter'])
+ self.other_user = fixture_add_user(
+ username="otheruser",
+ privileges=[u'active', u'uploader', u'commenter']
+ )
+ self.active_user = self.user
+ def _activity_to_feed(self, test_app, activity, headers=None):
+ """ Posts an activity to the user's feed """
+ if headers:
+ headers.setdefault("Content-Type", "application/json")
+ else:
+ headers = {"Content-Type": "application/json"}
-class TestAPI(object):
- def setup(self):
- self.db = mg_globals.database
+ with self.mock_oauth():
+ response = test_app.post(
+ "/api/user/{0}/feed".format(self.active_user.username),
+ json.dumps(activity),
+ headers=headers
+ )
+
+ return response, json.loads(response.body.decode())
+
+ def _upload_image(self, test_app, image):
+ """ Uploads and image to MediaGoblin via pump.io API """
+ data = open(image, "rb").read()
+ headers = {
+ "Content-Type": "image/jpeg",
+ "Content-Length": str(len(data))
+ }
+
+
+ with self.mock_oauth():
+ response = test_app.post(
+ "/api/user/{0}/uploads".format(self.active_user.username),
+ data,
+ headers=headers
+ )
+ image = json.loads(response.body.decode())
+
+ return response, image
+
+ def _post_image_to_feed(self, test_app, image):
+ """ Posts an already uploaded image to feed """
+ activity = {
+ "verb": "post",
+ "object": image,
+ }
+
+ return self._activity_to_feed(test_app, activity)
+
+ def mocked_oauth_required(self, *args, **kwargs):
+ """ Mocks mediagoblin.decorator.oauth_required to always validate """
+
+ def fake_controller(controller, request, *args, **kwargs):
+ request.user = User.query.filter_by(id=self.active_user.id).first()
+ return controller(request, *args, **kwargs)
+
+ def oauth_required(c):
+ return lambda *args, **kwargs: fake_controller(c, *args, **kwargs)
+
+ return oauth_required
+
+ def mock_oauth(self):
+ """ Returns a mock.patch for the oauth_required decorator """
+ return mock.patch(
+ target="mediagoblin.decorators.oauth_required",
+ new_callable=self.mocked_oauth_required
+ )
+
+ def test_can_post_image(self, test_app):
+ """ Tests that an image can be posted to the API """
+ # First request we need to do is to upload the image
+ response, image = self._upload_image(test_app, GOOD_JPG)
+
+ # I should have got certain things back
+ assert response.status_code == 200
+
+ assert "id" in image
+ assert "fullImage" in image
+ assert "url" in image["fullImage"]
+ assert "url" in image
+ assert "author" in image
+ assert "published" in image
+ assert "updated" in image
+ assert image["objectType"] == "image"
+
+ # Check that we got the response we're expecting
+ response, _ = self._post_image_to_feed(test_app, image)
+ assert response.status_code == 200
+
+ def test_unable_to_upload_as_someone_else(self, test_app):
+ """ Test that can't upload as someoen else """
+ data = open(GOOD_JPG, "rb").read()
+ headers = {
+ "Content-Type": "image/jpeg",
+ "Content-Length": str(len(data))
+ }
+
+ with self.mock_oauth():
+ # Will be self.user trying to upload as self.other_user
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/uploads".format(self.other_user.username),
+ data,
+ headers=headers
+ )
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_unable_to_post_feed_as_someone_else(self, test_app):
+ """ Tests that can't post an image to someone else's feed """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+
+ activity = {
+ "verb": "post",
+ "object": data
+ }
+
+ headers = {
+ "Content-Type": "application/json",
+ }
+
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/feed".format(self.other_user.username),
+ json.dumps(activity),
+ headers=headers
+ )
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_only_able_to_update_own_image(self, test_app):
+ """ Test's that the uploader is the only person who can update an image """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ activity = {
+ "verb": "update",
+ "object": data["object"],
+ }
+
+ headers = {
+ "Content-Type": "application/json",
+ }
+
+ # Lets change the image uploader to be self.other_user, this is easier
+ # than uploading the image as someone else as the way self.mocked_oauth_required
+ # and self._upload_image.
+ media = MediaEntry.query.filter_by(public_id=data["object"]["id"]).first()
+ media.actor = self.other_user.id
+ media.save()
+
+ # Now lets try and edit the image as self.user, this should produce a 403 error.
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/feed".format(self.user.username),
+ json.dumps(activity),
+ headers=headers
+ )
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_upload_image_with_filename(self, test_app):
+ """ Tests that you can upload an image with filename and description """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ image = data["object"]
+
+ # Now we need to add a title and description
+ title = "My image ^_^"
+ description = "This is my super awesome image :D"
+ license = "CC-BY-SA"
+
+ image["displayName"] = title
+ image["content"] = description
+ image["license"] = license
+
+ activity = {"verb": "update", "object": image}
+
+ with self.mock_oauth():
+ response = test_app.post(
+ "/api/user/{0}/feed".format(self.user.username),
+ json.dumps(activity),
+ headers={"Content-Type": "application/json"}
+ )
+
+ image = json.loads(response.body.decode())["object"]
+
+ # Check everything has been set on the media correctly
+ media = MediaEntry.query.filter_by(public_id=image["id"]).first()
+ assert media.title == title
+ assert media.description == description
+ assert media.license == license
+
+ # Check we're being given back everything we should on an update
+ assert image["id"] == media.public_id
+ assert image["displayName"] == title
+ assert image["content"] == description
+ assert image["license"] == license
+
+
+ def test_only_uploaders_post_image(self, test_app):
+ """ Test that only uploaders can upload images """
+ # Remove uploader permissions from user
+ take_away_privileges(self.user.username, u"uploader")
+
+ # Now try and upload a image
+ data = open(GOOD_JPG, "rb").read()
+ headers = {
+ "Content-Type": "image/jpeg",
+ "Content-Length": str(len(data)),
+ }
+
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/uploads".format(self.user.username),
+ data,
+ headers=headers
+ )
+
+ # Assert that we've got a 403
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_object_endpoint(self, test_app):
+ """ Tests that object can be looked up at endpoint """
+ # Post an image
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ # Now lookup image to check that endpoint works.
+ image = data["object"]
+
+ assert "links" in image
+ assert "self" in image["links"]
+
+ # Get URI and strip testing host off
+ object_uri = image["links"]["self"]["href"]
+ object_uri = object_uri.replace("http://localhost:80", "")
+
+ with self.mock_oauth():
+ request = test_app.get(object_uri)
+
+ image = json.loads(request.body.decode())
+ entry = MediaEntry.query.filter_by(public_id=image["id"]).first()
+
+ assert request.status_code == 200
+
+ assert "image" in image
+ assert "fullImage" in image
+ assert "pump_io" in image
+ assert "links" in image
+
+ def test_post_comment(self, test_app):
+ """ Tests that I can post an comment media """
+ # Upload some media to comment on
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ content = "Hai this is a comment on this lovely picture ^_^"
+
+ activity = {
+ "verb": "post",
+ "object": {
+ "objectType": "comment",
+ "content": content,
+ "inReplyTo": data["object"],
+ }
+ }
+
+ response, comment_data = self._activity_to_feed(test_app, activity)
+ assert response.status_code == 200
+
+ # Find the objects in the database
+ media = MediaEntry.query.filter_by(public_id=data["object"]["id"]).first()
+ comment = media.get_comments()[0].comment()
+
+ # Tests that it matches in the database
+ assert comment.actor == self.user.id
+ assert comment.content == content
+
+ # Test that the response is what we should be given
+ assert comment.content == comment_data["object"]["content"]
+
+ def test_unable_to_post_comment_as_someone_else(self, test_app):
+ """ Tests that you're unable to post a comment as someone else. """
+ # Upload some media to comment on
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ activity = {
+ "verb": "post",
+ "object": {
+ "objectType": "comment",
+ "content": "comment commenty comment ^_^",
+ "inReplyTo": data["object"],
+ }
+ }
+
+ headers = {
+ "Content-Type": "application/json",
+ }
+
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/feed".format(self.other_user.username),
+ json.dumps(activity),
+ headers=headers
+ )
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_unable_to_update_someone_elses_comment(self, test_app):
+ """ Test that you're able to update someoen elses comment. """
+ # Upload some media to comment on
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ activity = {
+ "verb": "post",
+ "object": {
+ "objectType": "comment",
+ "content": "comment commenty comment ^_^",
+ "inReplyTo": data["object"],
+ }
+ }
+
+ headers = {
+ "Content-Type": "application/json",
+ }
+
+ # Post the comment.
+ response, comment_data = self._activity_to_feed(test_app, activity)
+
+ # change who uploaded the comment as it's easier than changing
+ comment = TextComment.query.filter_by(public_id=comment_data["object"]["id"]).first()
+ comment.actor = self.other_user.id
+ comment.save()
+
+ # Update the comment as someone else.
+ comment_data["object"]["content"] = "Yep"
+ activity = {
+ "verb": "update",
+ "object": comment_data["object"]
+ }
+
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ test_app.post(
+ "/api/user/{0}/feed".format(self.user.username),
+ json.dumps(activity),
+ headers=headers
+ )
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_profile(self, test_app):
+ """ Tests profile endpoint """
+ uri = "/api/user/{0}/profile".format(self.user.username)
+ with self.mock_oauth():
+ response = test_app.get(uri)
+ profile = json.loads(response.body.decode())
+
+ assert response.status_code == 200
+
+ assert profile["preferredUsername"] == self.user.username
+ assert profile["objectType"] == "person"
+
+ assert "links" in profile
+
+ def test_user(self, test_app):
+ """ Test the user endpoint """
+ uri = "/api/user/{0}/".format(self.user.username)
+ with self.mock_oauth():
+ response = test_app.get(uri)
+ user = json.loads(response.body.decode())
+
+ assert response.status_code == 200
+
+ assert user["nickname"] == self.user.username
+ assert user["updated"] == self.user.created.isoformat()
+ assert user["published"] == self.user.created.isoformat()
+
+ # Test profile exists but self.test_profile will test the value
+ assert "profile" in response
+
+ def test_whoami_without_login(self, test_app):
+ """ Test that whoami endpoint returns error when not logged in """
+ with pytest.raises(AppError) as excinfo:
+ response = test_app.get("/api/whoami")
+
+ assert "401 UNAUTHORIZED" in excinfo.value.args[0]
+
+ def test_read_feed(self, test_app):
+ """ Test able to read objects from the feed """
+ response, image_data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, image_data)
+
+ uri = "/api/user/{0}/feed".format(self.active_user.username)
+ with self.mock_oauth():
+ response = test_app.get(uri)
+ feed = json.loads(response.body.decode())
+
+ assert response.status_code == 200
+
+ # Check it has the attributes it should
+ assert "displayName" in feed
+ assert "objectTypes" in feed
+ assert "url" in feed
+ assert "links" in feed
+ assert "author" in feed
+ assert "items" in feed
+
+ # Check that image i uploaded is there
+ assert feed["items"][0]["verb"] == "post"
+ assert feed["items"][0]["id"] == data["id"]
+ assert feed["items"][0]["object"]["objectType"] == "image"
+ assert feed["items"][0]["object"]["id"] == data["object"]["id"]
+
+ default_limit = 20
+ items_count = default_limit * 2
+ for i in range(items_count):
+ response, image_data = self._upload_image(test_app, GOOD_JPG)
+ self._post_image_to_feed(test_app, image_data)
+ items_count += 1 # because there already is one
+
+ #
+ # default returns default_limit items
+ #
+ with self.mock_oauth():
+ response = test_app.get(uri)
+ feed = json.loads(response.body.decode())
+ assert len(feed["items"]) == default_limit
+
+ #
+ # silentely ignore count and offset that that are
+ # not a number
+ #
+ with self.mock_oauth():
+ response = test_app.get(uri + "?count=BAD&offset=WORSE")
+ feed = json.loads(response.body.decode())
+ assert len(feed["items"]) == default_limit
+
+ #
+ # if offset is less than default_limit items
+ # from the end of the feed, return less than
+ # default_limit
+ #
+ with self.mock_oauth():
+ near_the_end = items_count - default_limit / 2
+ response = test_app.get(uri + "?offset=%d" % near_the_end)
+ feed = json.loads(response.body.decode())
+ assert len(feed["items"]) < default_limit
+
+ #
+ # count=5 returns 5 items
+ #
+ with self.mock_oauth():
+ response = test_app.get(uri + "?count=5")
+ feed = json.loads(response.body.decode())
+ assert len(feed["items"]) == 5
+
+ def test_read_another_feed(self, test_app):
+ """ Test able to read objects from someone else's feed """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+
+ # Change the active user to someone else.
+ self.active_user = self.other_user
+
+ # Fetch the feed
+ url = "/api/user/{0}/feed".format(self.user.username)
+ with self.mock_oauth():
+ response = test_app.get(url)
+ feed = json.loads(response.body.decode())
+
+ assert response.status_code == 200
+
+ # Check it has the attributes it ought to.
+ assert "displayName" in feed
+ assert "objectTypes" in feed
+ assert "url" in feed
+ assert "links" in feed
+ assert "author" in feed
+ assert "items" in feed
+
+ # Assert the uploaded image is there
+ assert feed["items"][0]["verb"] == "post"
+ assert feed["items"][0]["id"] == data["id"]
+ assert feed["items"][0]["object"]["objectType"] == "image"
+ assert feed["items"][0]["object"]["id"] == data["object"]["id"]
+
+ def test_cant_post_to_someone_elses_feed(self, test_app):
+ """ Test that can't post to someone elses feed """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ self.active_user = self.other_user
+
+ with self.mock_oauth():
+ with pytest.raises(AppError) as excinfo:
+ self._post_image_to_feed(test_app, data)
+
+ assert "403 FORBIDDEN" in excinfo.value.args[0]
+
+ def test_object_endpoint_requestable(self, test_app):
+ """ Test that object endpoint can be requested """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+ object_id = data["object"]["id"]
+
+ with self.mock_oauth():
+ response = test_app.get(data["object"]["links"]["self"]["href"])
+ data = json.loads(response.body.decode())
+
+ assert response.status_code == 200
+
+ assert object_id == data["id"]
+ assert "url" in data
+ assert "links" in data
+ assert data["objectType"] == "image"
+
+ def test_delete_media_by_activity(self, test_app):
+ """ Test that an image can be deleted by a delete activity to feed """
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
+ object_id = data["object"]["id"]
+
+ activity = {
+ "verb": "delete",
+ "object": {
+ "id": object_id,
+ "objectType": "image",
+ }
+ }
+
+ response = self._activity_to_feed(test_app, activity)[1]
- self.user_password = u'4cc355_70k3N'
- self.user = fixture_add_user(u'joapi', self.user_password,
- privileges=[u'active',u'uploader'])
+ # Check the media is no longer in the database
+ media = MediaEntry.query.filter_by(public_id=object_id).first()
- def login(self, test_app):
- test_app.post(
- '/auth/login/', {
- 'username': self.user.username,
- 'password': self.user_password})
+ assert media is None
- def get_context(self, template_name):
- return template.TEMPLATE_TEST_CONTEXT[template_name]
+ # Check we've been given the full delete activity back
+ assert "id" in response
+ assert response["verb"] == "delete"
+ assert "object" in response
+ assert response["object"]["id"] == object_id
+ assert response["object"]["objectType"] == "image"
- def http_auth_headers(self):
- return {'Authorization': 'Basic {0}'.format(
- base64.b64encode(':'.join([
- self.user.username,
- self.user_password])))}
+ def test_delete_comment_by_activity(self, test_app):
+ """ Test that a comment is deleted by a delete activity to feed """
+ # First upload an image to comment against
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
- def do_post(self, data, test_app, **kwargs):
- url = kwargs.pop('url', '/api/submit')
- do_follow = kwargs.pop('do_follow', False)
+ # Post a comment to delete
+ activity = {
+ "verb": "post",
+ "object": {
+ "objectType": "comment",
+ "content": "This is a comment.",
+ "inReplyTo": data["object"],
+ }
+ }
- if not 'headers' in kwargs.keys():
- kwargs['headers'] = self.http_auth_headers()
+ comment = self._activity_to_feed(test_app, activity)[1]
- response = test_app.post(url, data, **kwargs)
+ # Now delete the image
+ activity = {
+ "verb": "delete",
+ "object": {
+ "id": comment["object"]["id"],
+ "objectType": "comment",
+ }
+ }
- if do_follow:
- response.follow()
+ delete = self._activity_to_feed(test_app, activity)[1]
- return response
+ # Verify the comment no longer exists
+ assert TextComment.query.filter_by(public_id=comment["object"]["id"]).first() is None
+ comment_id = comment["object"]["id"]
- def upload_data(self, filename):
- return {'upload_files': [('file', filename)]}
+ # Check we've got a delete activity back
+ assert "id" in delete
+ assert delete["verb"] == "delete"
+ assert "object" in delete
+ assert delete["object"]["id"] == comment["object"]["id"]
+ assert delete["object"]["objectType"] == "comment"
- def test_1_test_test_view(self, test_app):
- self.login(test_app)
+ def test_edit_comment(self, test_app):
+ """ Test that someone can update their own comment """
+ # First upload an image to comment against
+ response, data = self._upload_image(test_app, GOOD_JPG)
+ response, data = self._post_image_to_feed(test_app, data)
- response = test_app.get(
- '/api/test',
- headers=self.http_auth_headers())
+ # Post a comment to edit
+ activity = {
+ "verb": "post",
+ "object": {
+ "objectType": "comment",
+ "content": "This is a comment",
+ "inReplyTo": data["object"],
+ }
+ }
- assert response.body == \
- '{"username": "joapi", "email": "joapi@example.com"}'
+ comment = self._activity_to_feed(test_app, activity)[1]
- def test_2_test_submission(self, test_app):
- self.login(test_app)
+ # Now create an update activity to change the content
+ activity = {
+ "verb": "update",
+ "object": {
+ "id": comment["object"]["id"],
+ "content": "This is my fancy new content string!",
+ "objectType": "comment",
+ },
+ }
- response = self.do_post(
- {'title': 'Great JPG!'},
- test_app,
- **self.upload_data(GOOD_JPG))
+ comment = self._activity_to_feed(test_app, activity)[1]
- assert response.status_int == 200
+ # Verify the comment reflects the changes
+ model = TextComment.query.filter_by(public_id=comment["object"]["id"]).first()
- assert self.db.MediaEntry.query.filter_by(title=u'Great JPG!').first()
+ assert model.content == activity["object"]["content"]
diff --git a/mediagoblin/tests/test_audio.py b/mediagoblin/tests/test_audio.py
new file mode 100644
index 00000000..9826ceb1
--- /dev/null
+++ b/mediagoblin/tests/test_audio.py
@@ -0,0 +1,105 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2013 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import tempfile
+import shutil
+import os
+import pytest
+from contextlib import contextmanager
+import logging
+import imghdr
+
+#os.environ['GST_DEBUG'] = '4,python:4'
+
+pytest.importorskip("gi.repository.Gst")
+pytest.importorskip("scikits.audiolab")
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import Gst
+Gst.init(None)
+
+from mediagoblin.media_types.audio.transcoders import (AudioTranscoder,
+ AudioThumbnailer)
+from mediagoblin.media_types.tools import discover
+
+
+@contextmanager
+def create_audio():
+ audio = tempfile.NamedTemporaryFile()
+ src = Gst.ElementFactory.make('audiotestsrc', None)
+ src.set_property('num-buffers', 50)
+ enc = Gst.ElementFactory.make('flacenc', None)
+ dst = Gst.ElementFactory.make('filesink', None)
+ dst.set_property('location', audio.name)
+ pipeline = Gst.Pipeline()
+ pipeline.add(src)
+ pipeline.add(enc)
+ pipeline.add(dst)
+ src.link(enc)
+ enc.link(dst)
+ pipeline.set_state(Gst.State.PLAYING)
+ state = pipeline.get_state(3 * Gst.SECOND)
+ assert state[0] == Gst.StateChangeReturn.SUCCESS
+ bus = pipeline.get_bus()
+ bus.timed_pop_filtered(
+ 3 * Gst.SECOND,
+ Gst.MessageType.ERROR | Gst.MessageType.EOS)
+ pipeline.set_state(Gst.State.NULL)
+ yield (audio.name)
+
+
+@contextmanager
+def create_data_for_test():
+ with create_audio() as audio_name:
+ second_file = tempfile.NamedTemporaryFile()
+ yield (audio_name, second_file.name)
+
+
+def test_transcoder():
+ '''
+ Tests AudioTransocder's transcode method
+ '''
+ transcoder = AudioTranscoder()
+ with create_data_for_test() as (audio_name, result_name):
+ transcoder.transcode(audio_name, result_name, quality=0.3,
+ progress_callback=None)
+ info = discover(result_name)
+ assert len(info.get_audio_streams()) == 1
+ transcoder.transcode(audio_name, result_name, quality=0.3,
+ mux_name='oggmux', progress_callback=None)
+ info = discover(result_name)
+ assert len(info.get_audio_streams()) == 1
+
+
+def test_thumbnails():
+ '''Test thumbnails generation.
+
+ The code below heavily repeats
+ audio.processing.CommonAudioProcessor.create_spectrogram
+ 1. Create test audio
+ 2. Convert it to OGG source for spectogram using transcoder
+ 3. Create spectogram in jpg
+
+ '''
+ thumbnailer = AudioThumbnailer()
+ transcoder = AudioTranscoder()
+ with create_data_for_test() as (audio_name, new_name):
+ transcoder.transcode(audio_name, new_name, mux_name='oggmux')
+ thumbnail = tempfile.NamedTemporaryFile(suffix='.jpg')
+ # fft_size below is copypasted from config_spec.ini
+ thumbnailer.spectrogram(new_name, thumbnail.name, width=100,
+ fft_size=4096)
+ assert imghdr.what(thumbnail.name) == 'jpeg'
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index 1bbc3d01..618d02b6 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -1,4 +1,3 @@
-
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
@@ -14,12 +13,16 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse
+
import pkg_resources
import pytest
+import six
+
+import six.moves.urllib.parse as urlparse
+
from mediagoblin import mg_globals
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.tests.tools import get_app, fixture_add_user
from mediagoblin.tools import template, mail
from mediagoblin.auth import tools as auth_tools
@@ -76,9 +79,31 @@ def test_register_views(test_app):
assert form.username.errors == [u'This field does not take email addresses.']
assert form.email.errors == [u'This field requires an email address.']
+ ## invalid characters
+ template.clear_test_template_context()
+ test_app.post(
+ '/auth/register/', {
+ 'username': 'ampersand&invalid',
+ 'email': 'easter@egg.com'})
+ context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html']
+ form = context['register_form']
+
+ assert form.username.errors == [u'Invalid input.']
+
## At this point there should be no users in the database ;)
assert User.query.count() == 0
+ ## mixture of characters from all valid ranges
+ template.clear_test_template_context()
+ test_app.post(
+ '/auth/register/', {
+ 'username': 'Jean-Louis1_Le-Chat',
+ 'password': 'iamsohappy',
+ 'email': 'easter@egg.com'})
+
+ ## At this point there should on user in the database
+ assert User.query.count() == 1
+
# Successful register
# -------------------
template.clear_test_template_context()
@@ -94,8 +119,9 @@ def test_register_views(test_app):
assert 'mediagoblin/user_pages/user_nonactive.html' in template.TEMPLATE_TEST_CONTEXT
## Make sure user is in place
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'angrygirl'
+ ).first()
assert new_user
## Make sure that the proper privileges are granted on registration
@@ -107,15 +133,15 @@ def test_register_views(test_app):
## Make sure user is logged in
request = template.TEMPLATE_TEST_CONTEXT[
'mediagoblin/user_pages/user_nonactive.html']['request']
- assert request.session['user_id'] == unicode(new_user.id)
+ assert request.session['user_id'] == six.text_type(new_user.id)
## Make sure we get email confirmation, and try verifying
- assert len(mail.EMAIL_TEST_INBOX) == 1
+ assert len(mail.EMAIL_TEST_INBOX) == 2
message = mail.EMAIL_TEST_INBOX.pop()
assert message['To'] == 'angrygrrl@example.org'
email_context = template.TEMPLATE_TEST_CONTEXT[
'mediagoblin/auth/verification_email.txt']
- assert email_context['verification_url'] in message.get_payload(decode=True)
+ assert email_context['verification_url'].encode('ascii') in message.get_payload(decode=True)
path = urlparse.urlsplit(email_context['verification_url'])[2]
get_params = urlparse.urlsplit(email_context['verification_url'])[3]
@@ -133,8 +159,9 @@ def test_register_views(test_app):
# assert context['verification_successful'] == True
# TODO: Would be good to test messages here when we can do so...
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'angrygirl'
+ ).first()
assert new_user
## Verify the email activation works
@@ -145,8 +172,9 @@ def test_register_views(test_app):
'mediagoblin/user_pages/user.html']
# assert context['verification_successful'] == True
# TODO: Would be good to test messages here when we can do so...
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'angrygirl'
+ ).first()
assert new_user
# Uniqueness checks
@@ -180,13 +208,13 @@ def test_register_views(test_app):
assert 'mediagoblin/auth/login.html' in template.TEMPLATE_TEST_CONTEXT
## Make sure link to change password is sent by email
- assert len(mail.EMAIL_TEST_INBOX) == 1
+ assert len(mail.EMAIL_TEST_INBOX) == 2
message = mail.EMAIL_TEST_INBOX.pop()
assert message['To'] == 'angrygrrl@example.org'
email_context = template.TEMPLATE_TEST_CONTEXT[
'mediagoblin/plugins/basic_auth/fp_verification_email.txt']
#TODO - change the name of verification_url to something forgot-password-ish
- assert email_context['verification_url'] in message.get_payload(decode=True)
+ assert email_context['verification_url'].encode('ascii') in message.get_payload(decode=True)
path = urlparse.urlsplit(email_context['verification_url'])[2]
get_params = urlparse.urlsplit(email_context['verification_url'])[3]
@@ -229,7 +257,6 @@ def test_register_views(test_app):
assert urlparse.urlsplit(response.location)[2] == '/'
assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT
-
def test_authentication_views(test_app):
"""
Test logging in and logging out
@@ -305,7 +332,7 @@ def test_authentication_views(test_app):
# Make sure user is in the session
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
session = context['request'].session
- assert session['user_id'] == unicode(test_user.id)
+ assert session['user_id'] == six.text_type(test_user.id)
# Successful logout
# -----------------
@@ -332,6 +359,66 @@ def test_authentication_views(test_app):
'next' : '/u/chris/'})
assert urlparse.urlsplit(response.location)[2] == '/u/chris/'
+ ## Verify that username is lowercased on login attempt
+ template.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'ANDREW',
+ 'password': 'fuselage'})
+ context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ form = context['login_form']
+
+ # Username should no longer be uppercased; it should be lowercased
+ assert not form.username.data == u'ANDREW'
+ assert form.username.data == u'andrew'
+
+ # Successful login with short user
+ # --------------------------------
+ short_user = fixture_add_user(username=u'me', password=u'sho')
+ template.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'me',
+ 'password': 'sho'})
+
+ # User should be redirected
+ response.follow()
+
+ assert urlparse.urlsplit(response.location)[2] == '/'
+ assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT
+
+ # Make sure user is in the session
+ context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
+ session = context['request'].session
+ assert session['user_id'] == six.text_type(short_user.id)
+
+ # Must logout
+ template.clear_test_template_context()
+ response = test_app.get('/auth/logout/')
+
+ # Successful login with long user
+ # ----------------
+ long_user = fixture_add_user(
+ username=u'realllylonguser@reallylongdomain.com.co', password=u'sho')
+ template.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'realllylonguser@reallylongdomain.com.co',
+ 'password': 'sho'})
+
+ # User should be redirected
+ response.follow()
+ assert urlparse.urlsplit(response.location)[2] == '/'
+ assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT
+
+ # Make sure user is in the session
+ context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
+ session = context['request'].session
+ assert session['user_id'] == six.text_type(long_user.id)
+
+ template.clear_test_template_context()
+ response = test_app.get('/auth/logout/')
+
@pytest.fixture()
def authentication_disabled_app(request):
return get_app(
diff --git a/mediagoblin/tests/test_basic_auth.py b/mediagoblin/tests/test_basic_auth.py
index 828f0515..3a42e407 100644
--- a/mediagoblin/tests/test_basic_auth.py
+++ b/mediagoblin/tests/test_basic_auth.py
@@ -13,9 +13,10 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse
-from mediagoblin.db.models import User
+import six.moves.urllib.parse as urlparse
+
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.basic_auth import tools as auth_tools
from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template
@@ -87,7 +88,7 @@ def test_change_password(test_app):
assert urlparse.urlsplit(res.location)[2] == '/edit/account/'
# test_user has to be fetched again in order to have the current values
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = LocalUser.query.filter(LocalUser.username==u'chris').first()
assert auth_tools.bcrypt_check_password('123456', test_user.pw_hash)
# test that the password cannot be changed if the given
@@ -99,5 +100,5 @@ def test_change_password(test_app):
'new_password': '098765',
})
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = LocalUser.query.filter(LocalUser.username==u'chris').first()
assert not auth_tools.bcrypt_check_password('098765', test_user.pw_hash)
diff --git a/mediagoblin/tests/test_celery_setup.py b/mediagoblin/tests/test_celery_setup.py
index d60293f9..df0d04b0 100644
--- a/mediagoblin/tests/test_celery_setup.py
+++ b/mediagoblin/tests/test_celery_setup.py
@@ -48,7 +48,8 @@ def test_setup_celery_from_config():
assert isinstance(fake_celery_module.CELERYD_ETA_SCHEDULER_PRECISION, float)
assert fake_celery_module.CELERY_RESULT_PERSISTENT is True
assert fake_celery_module.CELERY_IMPORTS == [
- 'foo.bar.baz', 'this.is.an.import', 'mediagoblin.processing.task', 'mediagoblin.notifications.task']
+ 'foo.bar.baz', 'this.is.an.import', 'mediagoblin.processing.task', \
+ 'mediagoblin.notifications.task', 'mediagoblin.submit.task']
assert fake_celery_module.CELERY_RESULT_BACKEND == 'database'
assert fake_celery_module.CELERY_RESULT_DBURI == (
'sqlite:///' +
diff --git a/mediagoblin/tests/test_csrf_middleware.py b/mediagoblin/tests/test_csrf_middleware.py
index a272caf6..4452112b 100644
--- a/mediagoblin/tests/test_csrf_middleware.py
+++ b/mediagoblin/tests/test_csrf_middleware.py
@@ -25,7 +25,7 @@ def test_csrf_cookie_set(test_app):
# assert that the mediagoblin nonce cookie has been set
assert 'Set-Cookie' in response.headers
- assert cookie_name in response.cookies_set
+ assert cookie_name in test_app.cookies
# assert that we're also sending a vary header
assert response.headers.get('Vary', False) == 'Cookie'
@@ -34,7 +34,7 @@ def test_csrf_cookie_set(test_app):
# We need a fresh app for this test on webtest < 1.3.6.
# We do not understand why, but it fixes the tests.
# If we require webtest >= 1.3.6, we can switch to a non fresh app here.
-#
+#
# ... this comment might be irrelevant post-pytest-fixtures, but I'm not
# removing it yet in case we move to module-level tests :)
# -- cwebber
diff --git a/mediagoblin/tests/test_edit.py b/mediagoblin/tests/test_edit.py
index dc9c422f..632c8e3c 100644
--- a/mediagoblin/tests/test_edit.py
+++ b/mediagoblin/tests/test_edit.py
@@ -14,10 +14,12 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse, os, pytest
+import six
+import six.moves.urllib.parse as urlparse
+import pytest
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, MediaEntry
+from mediagoblin.db.models import User, LocalUser, MediaEntry
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
from mediagoblin import auth
from mediagoblin.tools import template, mail
@@ -42,12 +44,12 @@ class TestUserEdit(object):
self.login(test_app)
# Make sure user exists
- assert User.query.filter_by(username=u'chris').first()
+ assert LocalUser.query.filter(LocalUser.username==u'chris').first()
res = test_app.post('/edit/account/delete/', {'confirmed': 'y'})
# Make sure user has been deleted
- assert User.query.filter_by(username=u'chris').first() == None
+ assert LocalUser.query.filter(LocalUser.username==u'chris').first() == None
#TODO: make sure all corresponding items comments etc have been
# deleted too. Perhaps in submission test?
@@ -77,7 +79,7 @@ class TestUserEdit(object):
'bio': u'I love toast!',
'url': u'http://dustycloud.org/'})
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = LocalUser.query.filter(LocalUser.username==u'chris').first()
assert test_user.bio == u'I love toast!'
assert test_user.url == u'http://dustycloud.org/'
@@ -142,8 +144,7 @@ class TestUserEdit(object):
assert message['To'] == 'new@example.com'
email_context = template.TEMPLATE_TEST_CONTEXT[
'mediagoblin/edit/verification.txt']
- assert email_context['verification_url'] in \
- message.get_payload(decode=True)
+ assert email_context['verification_url'].encode('ascii') in message.get_payload(decode=True)
path = urlparse.urlsplit(email_context['verification_url'])[2]
assert path == u'/edit/verify_email/'
@@ -158,9 +159,10 @@ class TestUserEdit(object):
assert urlparse.urlsplit(res.location)[2] == '/'
# Email shouldn't be saved
- email_in_db = mg_globals.database.User.query.filter_by(
- email='new@example.com').first()
- email = User.query.filter_by(username='chris').first().email
+ email_in_db = mg_globals.database.LocalUser.query.filter(
+ LocalUser.email=='new@example.com'
+ ).first()
+ email = LocalUser.query.filter(LocalUser.username=='chris').first().email
assert email_in_db is None
assert email == 'chris@example.com'
@@ -171,7 +173,7 @@ class TestUserEdit(object):
res.follow()
# New email saved?
- email = User.query.filter_by(username='chris').first().email
+ email = LocalUser.query.filter(LocalUser.username=='chris').first().email
assert email == 'new@example.com'
# test changing the url inproperly
@@ -180,8 +182,10 @@ class TestMetaDataEdit:
def setup(self, test_app):
# set up new user
self.user_password = u'toast'
- self.user = fixture_add_user(password = self.user_password,
- privileges=[u'active',u'admin'])
+ self.user = fixture_add_user(
+ password = self.user_password,
+ privileges=[u'active',u'admin']
+ )
self.test_app = test_app
def login(self, test_app):
@@ -250,5 +254,11 @@ class TestMetaDataEdit:
old_metadata = new_metadata
new_metadata = media_entry.media_metadata
assert new_metadata == old_metadata
- assert ("u&#39;On the worst day&#39; is not a &#39;date-time&#39;" in
- response.body)
+ context = template.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/edit/metadata.html']
+ if six.PY2:
+ expected = "u'On the worst day' is not a 'date-time'"
+ else:
+ expected = "'On the worst day' is not a 'date-time'"
+ assert context['form'].errors[
+ 'media_metadata'][0]['identifier'][0] == expected
diff --git a/mediagoblin/tests/test_exif.py b/mediagoblin/tests/test_exif.py
index af301818..d0495a7a 100644
--- a/mediagoblin/tests/test_exif.py
+++ b/mediagoblin/tests/test_exif.py
@@ -20,6 +20,8 @@ try:
except ImportError:
import Image
+from collections import OrderedDict
+
from mediagoblin.tools.exif import exif_fix_image_orientation, \
extract_exif, clean_exif, get_gps_data, get_useful
from .resources import GOOD_JPG, EMPTY_JPG, BAD_JPG, GPS_JPG
@@ -39,31 +41,32 @@ def test_exif_extraction():
gps = get_gps_data(result)
# Do we have the result?
- assert len(result) == 55
+ assert len(result) >= 50
# Do we have clean data?
- assert len(clean) == 53
+ assert len(clean) >= 50
# GPS data?
assert gps == {}
# Do we have the "useful" tags?
- assert useful == {'EXIF CVAPattern': {'field_length': 8,
+
+ expected = OrderedDict({'EXIF CVAPattern': {'field_length': 8,
'field_offset': 26224,
'field_type': 7,
- 'printable': u'[0, 2, 0, 2, 1, 2, 0, 1]',
+ 'printable': '[0, 2, 0, 2, 1, 2, 0, 1]',
'tag': 41730,
'values': [0, 2, 0, 2, 1, 2, 0, 1]},
'EXIF ColorSpace': {'field_length': 2,
'field_offset': 476,
'field_type': 3,
- 'printable': u'sRGB',
+ 'printable': 'sRGB',
'tag': 40961,
'values': [1]},
'EXIF ComponentsConfiguration': {'field_length': 4,
'field_offset': 308,
'field_type': 7,
- 'printable': u'YCbCr',
+ 'printable': 'YCbCr',
'tag': 37121,
'values': [1, 2, 3, 0]},
'EXIF CompressedBitsPerPixel': {'field_length': 8,
@@ -303,7 +306,7 @@ def test_exif_extraction():
'Image Orientation': {'field_length': 2,
'field_offset': 42,
'field_type': 3,
- 'printable': u'Rotated 90 CCW',
+ 'printable': u'Rotated 90 CW',
'tag': 274,
'values': [6]},
'Image ResolutionUnit': {'field_length': 2,
@@ -365,7 +368,10 @@ def test_exif_extraction():
'field_type': 5,
'printable': u'300',
'tag': 283,
- 'values': [[300, 1]]}}
+ 'values': [[300, 1]]}})
+
+ for key in expected.keys():
+ assert useful[key] == expected[key]
def test_exif_image_orientation():
@@ -379,11 +385,13 @@ def test_exif_image_orientation():
result)
# Are the dimensions correct?
- assert image.size == (428, 640)
+ assert image.size in ((428, 640), (640, 428))
# If this pixel looks right, the rest of the image probably will too.
+ # It seems different values are being seen on different platforms/systems
+ # as of ccca39f1 it seems we're adding to the list those which are seen.
assert_in(image.getdata()[10000],
- ((41, 28, 11), (43, 27, 11))
+ ((37, 23, 14), (41, 28, 11), (43, 27, 11))
)
diff --git a/mediagoblin/tests/test_http_callback.py b/mediagoblin/tests/test_http_callback.py
deleted file mode 100644
index 64b7ee8f..00000000
--- a/mediagoblin/tests/test_http_callback.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import json
-
-import pytest
-from urlparse import urlparse, parse_qs
-
-from mediagoblin import mg_globals
-from mediagoblin.tools import processing
-from mediagoblin.tests.tools import fixture_add_user
-from mediagoblin.tests.test_submission import GOOD_PNG
-from mediagoblin.tests import test_oauth2 as oauth
-
-
-class TestHTTPCallback(object):
- @pytest.fixture(autouse=True)
- def setup(self, test_app):
- self.test_app = test_app
-
- self.db = mg_globals.database
-
- self.user_password = u'secret'
- self.user = fixture_add_user(u'call_back', self.user_password)
-
- self.login()
-
- def login(self):
- self.test_app.post('/auth/login/', {
- 'username': self.user.username,
- 'password': self.user_password})
-
- def get_access_token(self, client_id, client_secret, code):
- response = self.test_app.get('/oauth-2/access_token', {
- 'code': code,
- 'client_id': client_id,
- 'client_secret': client_secret})
-
- response_data = json.loads(response.body)
-
- return response_data['access_token']
-
- def test_callback(self):
- ''' Test processing HTTP callback '''
- self.oauth = oauth.TestOAuth()
- self.oauth.setup(self.test_app)
-
- redirect, client_id = self.oauth.test_4_authorize_confidential_client()
-
- code = parse_qs(urlparse(redirect.location).query)['code'][0]
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.identifier == unicode(client_id)).first()
-
- client_secret = client.secret
-
- access_token = self.get_access_token(client_id, client_secret, code)
-
- callback_url = 'https://foo.example?secrettestmediagoblinparam'
-
- self.test_app.post('/api/submit?client_id={0}&access_token={1}\
-&client_secret={2}'.format(
- client_id,
- access_token,
- client_secret), {
- 'title': 'Test',
- 'callback_url': callback_url},
- upload_files=[('file', GOOD_PNG)])
-
- assert processing.TESTS_CALLBACKS[callback_url]['state'] == u'processed'
diff --git a/mediagoblin/tests/test_ldap.py b/mediagoblin/tests/test_ldap.py
index 7e20d059..6ac0fc46 100644
--- a/mediagoblin/tests/test_ldap.py
+++ b/mediagoblin/tests/test_ldap.py
@@ -13,13 +13,20 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse
+
import pkg_resources
import pytest
-import mock
+import six
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
+
+import six.moves.urllib.parse as urlparse
from mediagoblin import mg_globals
from mediagoblin.db.base import Session
+from mediagoblin.db.models import LocalUser
from mediagoblin.tests.tools import get_app
from mediagoblin.tools import template
@@ -108,8 +115,9 @@ def test_ldap_plugin(ldap_plugin_app):
ldap_plugin_app.get('/auth/logout/')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Log back in
@@ -126,6 +134,6 @@ def test_ldap_plugin(ldap_plugin_app):
# Make sure user is in the session
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
session = context['request'].session
- assert session['user_id'] == unicode(test_user.id)
+ assert session['user_id'] == six.text_type(test_user.id)
_test_authentication()
diff --git a/mediagoblin/tests/test_legacy_api.py b/mediagoblin/tests/test_legacy_api.py
new file mode 100644
index 00000000..b3b2fcec
--- /dev/null
+++ b/mediagoblin/tests/test_legacy_api.py
@@ -0,0 +1,94 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import logging
+import base64
+import json
+
+import pytest
+
+from mediagoblin import mg_globals
+from mediagoblin.tools import template, pluginapi
+from mediagoblin.tests.tools import fixture_add_user
+from .resources import GOOD_JPG, GOOD_PNG, EVIL_FILE, EVIL_JPG, EVIL_PNG, \
+ BIG_BLUE
+
+
+_log = logging.getLogger(__name__)
+
+
+class TestAPI(object):
+ def setup(self):
+ self.db = mg_globals.database
+
+ self.user_password = u'4cc355_70k3N'
+ self.user = fixture_add_user(u'joapi', self.user_password,
+ privileges=[u'active',u'uploader'])
+
+ def login(self, test_app):
+ test_app.post(
+ '/auth/login/', {
+ 'username': self.user.username,
+ 'password': self.user_password})
+
+ def get_context(self, template_name):
+ return template.TEMPLATE_TEST_CONTEXT[template_name]
+
+ def http_auth_headers(self):
+ return {'Authorization': ('Basic {0}'.format(
+ base64.b64encode((':'.join([
+ self.user.username,
+ self.user_password])).encode('ascii')).decode()))}
+
+ def do_post(self, data, test_app, **kwargs):
+ url = kwargs.pop('url', '/api/submit')
+ do_follow = kwargs.pop('do_follow', False)
+
+ if not 'headers' in kwargs.keys():
+ kwargs['headers'] = self.http_auth_headers()
+
+ response = test_app.post(url, data, **kwargs)
+
+ if do_follow:
+ response.follow()
+
+ return response
+
+ def upload_data(self, filename):
+ return {'upload_files': [('file', filename)]}
+
+ def test_1_test_test_view(self, test_app):
+ self.login(test_app)
+
+ response = test_app.get(
+ '/api/test',
+ headers=self.http_auth_headers())
+
+ assert json.loads(response.body.decode()) == {
+ "username": "joapi", "email": "joapi@example.com"}
+
+ def test_2_test_submission(self, test_app):
+ self.login(test_app)
+
+ response = self.do_post(
+ {'title': 'Great JPG!'},
+ test_app,
+ **self.upload_data(GOOD_JPG))
+
+ assert response.status_int == 200
+
+ assert self.db.MediaEntry.query.filter_by(title=u'Great JPG!').first()
diff --git a/mediagoblin/tests/test_metadata.py b/mediagoblin/tests/test_metadata.py
index b4ea646e..a10e00ec 100644
--- a/mediagoblin/tests/test_metadata.py
+++ b/mediagoblin/tests/test_metadata.py
@@ -56,7 +56,7 @@ class TestMetadataFunctionality:
jsonld_fail_1 = None
try:
jsonld_fail_1 = compact_and_validate(metadata_fail_1)
- except ValidationError, e:
+ except ValidationError as e:
assert e.message == "'All Rights Reserved.' is not a 'uri'"
assert jsonld_fail_1 == None
#,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
@@ -72,7 +72,7 @@ class TestMetadataFunctionality:
jsonld_fail_2 = None
try:
jsonld_fail_2 = compact_and_validate(metadata_fail_2)
- except ValidationError, e:
+ except ValidationError as e:
assert e.message == "'The other day' is not a 'date-time'"
assert jsonld_fail_2 == None
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index 4cd3d9b6..a873f71f 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -31,10 +31,12 @@ BROKER_URL = "sqlite:///%(here)s/test_user_dev/kombu.db"
[plugins]
[[mediagoblin.plugins.api]]
-[[mediagoblin.plugins.oauth]]
[[mediagoblin.plugins.httpapiauth]]
[[mediagoblin.plugins.piwigo]]
[[mediagoblin.plugins.basic_auth]]
[[mediagoblin.plugins.openid]]
[[mediagoblin.media_types.image]]
-[[mediagoblin.media_types.pdf]]
+## These ones enabled by specific applications
+# [[mediagoblin.media_types.video]]
+# [[mediagoblin.media_types.audio]]
+# [[mediagoblin.media_types.pdf]]
diff --git a/mediagoblin/tests/test_mgoblin_app_audio.ini b/mediagoblin/tests/test_mgoblin_app_audio.ini
new file mode 100644
index 00000000..e3bdb11a
--- /dev/null
+++ b/mediagoblin/tests/test_mgoblin_app_audio.ini
@@ -0,0 +1,20 @@
+[mediagoblin]
+#Runs with an in-memory sqlite db for speed.
+sql_engine = "sqlite://"
+run_migrations = true
+
+[storage:publicstore]
+base_dir = %(here)s/user_dev/media/public
+base_url = /mgoblin_media/
+
+[storage:queuestore]
+base_dir = %(here)s/user_dev/media/queue
+
+[celery]
+CELERY_ALWAYS_EAGER = true
+CELERY_RESULT_DBURI = "sqlite:///%(here)s/user_dev/celery.db"
+BROKER_URL = "sqlite:///%(here)s/test_user_dev/kombu.db"
+
+[plugins]
+[[mediagoblin.plugins.basic_auth]]
+[[mediagoblin.media_types.audio]]
diff --git a/mediagoblin/tests/test_mgoblin_app_audio_video.ini b/mediagoblin/tests/test_mgoblin_app_audio_video.ini
new file mode 100644
index 00000000..784015ee
--- /dev/null
+++ b/mediagoblin/tests/test_mgoblin_app_audio_video.ini
@@ -0,0 +1,21 @@
+[mediagoblin]
+#Runs with an in-memory sqlite db for speed.
+sql_engine = "sqlite://"
+run_migrations = true
+
+[storage:publicstore]
+base_dir = %(here)s/user_dev/media/public
+base_url = /mgoblin_media/
+
+[storage:queuestore]
+base_dir = %(here)s/user_dev/media/queue
+
+[celery]
+CELERY_ALWAYS_EAGER = true
+CELERY_RESULT_DBURI = "sqlite:///%(here)s/user_dev/celery.db"
+BROKER_URL = "sqlite:///%(here)s/test_user_dev/kombu.db"
+
+[plugins]
+[[mediagoblin.plugins.basic_auth]]
+[[mediagoblin.media_types.audio]]
+[[mediagoblin.media_types.video]]
diff --git a/mediagoblin/tests/test_mgoblin_app_pdf.ini b/mediagoblin/tests/test_mgoblin_app_pdf.ini
new file mode 100644
index 00000000..d1d3fcef
--- /dev/null
+++ b/mediagoblin/tests/test_mgoblin_app_pdf.ini
@@ -0,0 +1,20 @@
+[mediagoblin]
+#Runs with an in-memory sqlite db for speed.
+sql_engine = "sqlite://"
+run_migrations = true
+
+[storage:publicstore]
+base_dir = %(here)s/user_dev/media/public
+base_url = /mgoblin_media/
+
+[storage:queuestore]
+base_dir = %(here)s/user_dev/media/queue
+
+[celery]
+CELERY_ALWAYS_EAGER = true
+CELERY_RESULT_DBURI = "sqlite:///%(here)s/user_dev/celery.db"
+BROKER_URL = "sqlite:///%(here)s/test_user_dev/kombu.db"
+
+[plugins]
+[[mediagoblin.plugins.basic_auth]]
+[[mediagoblin.media_types.pdf]]
diff --git a/mediagoblin/tests/test_mgoblin_app_video.ini b/mediagoblin/tests/test_mgoblin_app_video.ini
new file mode 100644
index 00000000..8b0e16e5
--- /dev/null
+++ b/mediagoblin/tests/test_mgoblin_app_video.ini
@@ -0,0 +1,20 @@
+[mediagoblin]
+#Runs with an in-memory sqlite db for speed.
+sql_engine = "sqlite://"
+run_migrations = true
+
+[storage:publicstore]
+base_dir = %(here)s/user_dev/media/public
+base_url = /mgoblin_media/
+
+[storage:queuestore]
+base_dir = %(here)s/user_dev/media/queue
+
+[celery]
+CELERY_ALWAYS_EAGER = true
+CELERY_RESULT_DBURI = "sqlite:///%(here)s/user_dev/celery.db"
+BROKER_URL = "sqlite:///%(here)s/test_user_dev/kombu.db"
+
+[plugins]
+[[mediagoblin.plugins.basic_auth]]
+[[mediagoblin.media_types.video]]
diff --git a/mediagoblin/tests/test_misc.py b/mediagoblin/tests/test_misc.py
index 43ad0b6d..5500a0d7 100644
--- a/mediagoblin/tests/test_misc.py
+++ b/mediagoblin/tests/test_misc.py
@@ -14,8 +14,17 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import pytz
+import datetime
+
+from werkzeug.datastructures import FileStorage
+
+from .resources import GOOD_JPG
from mediagoblin.db.base import Session
-from mediagoblin.db.models import User, MediaEntry, MediaComment
+from mediagoblin.media_types import sniff_media
+from mediagoblin.submit.lib import new_upload_entry
+from mediagoblin.submit.task import collect_garbage
+from mediagoblin.db.models import User, MediaEntry, TextComment, Comment
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
@@ -37,25 +46,31 @@ def test_user_deletes_other_comments(test_app):
Session.flush()
# Create all 4 possible comments:
- for u_id in (user_a.id, user_b.id):
- for m_id in (media_a.id, media_b.id):
- cmt = MediaComment()
- cmt.media_entry = m_id
- cmt.author = u_id
+ for u in (user_a, user_b):
+ for m in (media_a, media_b):
+ cmt = TextComment()
+ cmt.actor = u.id
cmt.content = u"Some Comment"
Session.add(cmt)
+ # think i need this to get the command ID
+ Session.flush()
+
+ link = Comment()
+ link.target = m
+ link.comment = cmt
+ Session.add(link)
Session.flush()
usr_cnt1 = User.query.count()
med_cnt1 = MediaEntry.query.count()
- cmt_cnt1 = MediaComment.query.count()
+ cmt_cnt1 = Comment.query.count()
User.query.get(user_a.id).delete(commit=False)
usr_cnt2 = User.query.count()
med_cnt2 = MediaEntry.query.count()
- cmt_cnt2 = MediaComment.query.count()
+ cmt_cnt2 = Comment.query.count()
# One user deleted
assert usr_cnt2 == usr_cnt1 - 1
@@ -68,7 +83,7 @@ def test_user_deletes_other_comments(test_app):
usr_cnt2 = User.query.count()
med_cnt2 = MediaEntry.query.count()
- cmt_cnt2 = MediaComment.query.count()
+ cmt_cnt2 = Comment.query.count()
# All users gone
assert usr_cnt2 == usr_cnt1 - 2
@@ -91,3 +106,66 @@ def test_media_deletes_broken_attachment(test_app):
MediaEntry.query.get(media.id).delete()
User.query.get(user_a.id).delete()
+
+def test_garbage_collection_task(test_app):
+ """ Test old media entry are removed by GC task """
+ user = fixture_add_user()
+
+ # Create a media entry that's unprocessed and over an hour old.
+ entry_id = 72
+ now = datetime.datetime.now(pytz.UTC)
+ file_data = FileStorage(
+ stream=open(GOOD_JPG, "rb"),
+ filename="mah_test.jpg",
+ content_type="image/jpeg"
+ )
+
+ # Find media manager
+ media_type, media_manager = sniff_media(file_data, "mah_test.jpg")
+ entry = new_upload_entry(user)
+ entry.id = entry_id
+ entry.title = "Mah Image"
+ entry.slug = "slugy-slug-slug"
+ entry.media_type = 'image'
+ entry.created = now - datetime.timedelta(days=2)
+ entry.save()
+
+ # Validate the model exists
+ assert MediaEntry.query.filter_by(id=entry_id).first() is not None
+
+ # Call the garbage collection task
+ collect_garbage()
+
+ # Now validate the image has been deleted
+ assert MediaEntry.query.filter_by(id=entry_id).first() is None
+
+def test_comments_removed_when_graveyarded(test_app):
+ """ Checks comments which are tombstones are removed from collection """
+ user = fixture_add_user()
+ media = fixture_media_entry(
+ uploader=user.id,
+ expunge=False,
+ fake_upload=False
+ )
+
+ # Add the TextComment
+ comment = TextComment()
+ comment.actor = user.id
+ comment.content = u"This is a comment that will be deleted."
+ comment.save()
+
+ # Add a link for the comment
+ link = Comment()
+ link.target = media
+ link.comment = comment
+ link.save()
+
+ # First double check it's there and all is well...
+ assert Comment.query.filter_by(target_id=link.target_id).first() is not None
+
+ # Now delete the comment.
+ comment.delete()
+
+ # Verify this also deleted the Comment link, ergo there is no comment left.
+ assert Comment.query.filter_by(target_id=link.target_id).first() is None
+
diff --git a/mediagoblin/tests/test_modelmethods.py b/mediagoblin/tests/test_modelmethods.py
index ca436c76..4c66e27b 100644
--- a/mediagoblin/tests/test_modelmethods.py
+++ b/mediagoblin/tests/test_modelmethods.py
@@ -17,13 +17,20 @@
# Maybe not every model needs a test, but some models have special
# methods, and so it makes sense to test them here.
+from __future__ import print_function
+
from mediagoblin.db.base import Session
-from mediagoblin.db.models import MediaEntry, User, Privilege
+from mediagoblin.db.models import MediaEntry, User, LocalUser, Privilege, \
+ Activity, Generator
from mediagoblin.tests import MGClientTestCase
-from mediagoblin.tests.tools import fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry, \
+ fixture_add_activity
-import mock
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
import pytest
@@ -49,7 +56,7 @@ class TestMediaEntrySlugs(object):
entry.title = title or u"Some title"
entry.slug = slug
entry.id = this_id
- entry.uploader = uploader or self.chris_user.id
+ entry.actor = uploader or self.chris_user.id
entry.media_type = u'image'
if save:
@@ -161,10 +168,10 @@ class TestUserHasPrivilege:
privileges=[u'admin',u'moderator',u'active'])
fixture_add_user(u'aeva',
privileges=[u'moderator',u'active'])
- self.natalie_user = User.query.filter(
- User.username==u'natalie').first()
- self.aeva_user = User.query.filter(
- User.username==u'aeva').first()
+ self.natalie_user = LocalUser.query.filter(
+ LocalUser.username==u'natalie').first()
+ self.aeva_user = LocalUser.query.filter(
+ LocalUser.username==u'aeva').first()
def test_privilege_added_correctly(self, test_app):
self._setup()
@@ -179,20 +186,17 @@ class TestUserHasPrivilege:
self._setup()
# then test out the user.has_privilege method for one privilege
- assert not self.natalie_user.has_privilege(u'commenter')
- assert self.aeva_user.has_privilege(u'active')
-
+ assert not self.aeva_user.has_privilege(u'admin')
+ assert self.natalie_user.has_privilege(u'active')
- def test_user_has_privileges_multiple(self, test_app):
+ def test_allow_admin(self, test_app):
self._setup()
- # when multiple args are passed to has_privilege, the method returns
- # True if the user has ANY of the privileges
- assert self.natalie_user.has_privilege(u'admin',u'commenter')
- assert self.aeva_user.has_privilege(u'moderator',u'active')
- assert not self.natalie_user.has_privilege(u'commenter',u'uploader')
-
+ # This should work because she is an admin.
+ assert self.natalie_user.has_privilege(u'commenter')
+ # Test that we can look this out ignoring that she's an admin
+ assert not self.natalie_user.has_privilege(u'commenter', allow_admin=False)
def test_media_data_init(test_app):
Session.rollback()
@@ -205,7 +209,7 @@ def test_media_data_init(test_app):
obj_in_session = 0
for obj in Session():
obj_in_session += 1
- print repr(obj)
+ print(repr(obj))
assert obj_in_session == 0
diff --git a/mediagoblin/tests/test_moderation.py b/mediagoblin/tests/test_moderation.py
index e7a0ebef..55bb4c4b 100644
--- a/mediagoblin/tests/test_moderation.py
+++ b/mediagoblin/tests/test_moderation.py
@@ -18,7 +18,8 @@ import pytest
from mediagoblin.tests.tools import (fixture_add_user,
fixture_add_comment_report, fixture_add_comment)
-from mediagoblin.db.models import User, CommentReport, MediaComment, UserBan
+from mediagoblin.db.models import User, LocalUser, Report, TextComment, \
+ UserBan, GenericModelReference
from mediagoblin.tools import template, mail
from webtest import AppError
@@ -47,9 +48,9 @@ class TestModerationViews:
self.query_for_users()
def query_for_users(self):
- self.admin_user = User.query.filter(User.username==u'admin').first()
- self.mod_user = User.query.filter(User.username==u'moderator').first()
- self.user = User.query.filter(User.username==u'regular').first()
+ self.admin_user = LocalUser.query.filter(LocalUser.username==u'admin').first()
+ self.mod_user = LocalUser.query.filter(LocalUser.username==u'moderator').first()
+ self.user = LocalUser.query.filter(LocalUser.username==u'regular').first()
def do_post(self, data, *context_keys, **kwargs):
url = kwargs.pop('url', '/submit/')
@@ -102,15 +103,15 @@ class TestModerationViews:
# to a reported comment
#----------------------------------------------------------------------
fixture_add_comment_report(reported_user=self.user)
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.user).first()
response = self.test_app.get('/mod/reports/{0}/'.format(
comment_report.id))
assert response.status == '200 OK'
self.query_for_users()
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.user).first()
response, context = self.do_post({'action_to_resolve':[u'takeaway'],
'take_away_privileges':[u'commenter'],
@@ -118,15 +119,15 @@ class TestModerationViews:
url='/mod/reports/{0}/'.format(comment_report.id))
self.query_for_users()
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.user).first()
assert response.status == '302 FOUND'
assert not self.user.has_privilege(u'commenter')
assert comment_report.is_archived_report() is True
fixture_add_comment_report(reported_user=self.user)
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.user).first()
# Then, test a moderator sending an email to a user in response to a
# reported comment
@@ -139,8 +140,8 @@ class TestModerationViews:
url='/mod/reports/{0}/'.format(comment_report.id))
self.query_for_users()
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.user).first()
assert response.status == '302 FOUND'
assert mail.EMAIL_TEST_MBOX_INBOX == [{'to': [u'regular@example.com'],
'message': 'Content-Type: text/plain; charset="utf-8"\n\
@@ -157,13 +158,17 @@ VGhpcyBpcyB5b3VyIGxhc3Qgd2FybmluZywgcmVndWxhci4uLi4=\n',
self.query_for_users()
fixture_add_comment(author=self.user.id,
comment=u'Comment will be removed')
- test_comment = MediaComment.query.filter(
- MediaComment.author==self.user.id).first()
+ test_comment = TextComment.query.filter(
+ TextComment.actor==self.user.id).first()
fixture_add_comment_report(comment=test_comment,
reported_user=self.user)
- comment_report = CommentReport.query.filter(
- CommentReport.comment==test_comment).filter(
- CommentReport.resolved==None).first()
+ comment_gmr = GenericModelReference.query.filter_by(
+ obj_pk=test_comment.id,
+ model_type=test_comment.__tablename__
+ ).first()
+ comment_report = Report.query.filter(
+ Report.object_id==comment_gmr.id).filter(
+ Report.resolved==None).first()
response, context = self.do_post(
{'action_to_resolve':[u'userban', u'delete'],
@@ -176,17 +181,17 @@ VGhpcyBpcyB5b3VyIGxhc3Qgd2FybmluZywgcmVndWxhci4uLi4=\n',
test_user_ban = UserBan.query.filter(
UserBan.user_id == self.user.id).first()
assert test_user_ban is not None
- test_comment = MediaComment.query.filter(
- MediaComment.author==self.user.id).first()
+ test_comment = TextComment.query.filter(
+ TextComment.actor==self.user.id).first()
assert test_comment is None
# Then, test what happens when a moderator attempts to punish an admin
# from a reported comment on an admin.
#----------------------------------------------------------------------
fixture_add_comment_report(reported_user=self.admin_user)
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==self.admin_user).filter(
- CommentReport.resolved==None).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==self.admin_user).filter(
+ Report.resolved==None).first()
response, context = self.do_post({'action_to_resolve':[u'takeaway'],
'take_away_privileges':[u'active'],
diff --git a/mediagoblin/tests/test_notifications.py b/mediagoblin/tests/test_notifications.py
index 3bf36f5f..776bfc71 100644
--- a/mediagoblin/tests/test_notifications.py
+++ b/mediagoblin/tests/test_notifications.py
@@ -16,12 +16,11 @@
import pytest
-import urlparse
+import six.moves.urllib.parse as urlparse
from mediagoblin.tools import template, mail
-from mediagoblin.db.models import Notification, CommentNotification, \
- CommentSubscription
+from mediagoblin.db.models import Notification, CommentSubscription
from mediagoblin.db.base import Session
from mediagoblin.notifications import mark_comment_notification_seen
@@ -109,39 +108,52 @@ class TestNotifications:
notification = notifications[0]
- assert type(notification) == CommentNotification
assert notification.seen == False
assert notification.user_id == user.id
- assert notification.subject.get_author.id == self.test_user.id
- assert notification.subject.content == u'Test comment #42'
+ assert notification.obj().comment().get_actor.id == self.test_user.id
+ assert notification.obj().comment().content == u'Test comment #42'
if wants_email == True:
- assert mail.EMAIL_TEST_MBOX_INBOX == [
- {'from': 'notice@mediagoblin.example.org',
- 'message': 'Content-Type: text/plain; \
+ # Why the `or' here? In Werkzeug 0.11.0 and above
+ # werkzeug stopped showing the port for localhost when
+ # rendering something like this. As long as we're
+ # supporting pre-0.11.0 we'll keep this `or', but maybe
+ # in the future we can kill it.
+ assert (
+ mail.EMAIL_TEST_MBOX_INBOX == [
+ {'from': 'notice@mediagoblin.example.org',
+ 'message': 'Content-Type: text/plain; \
charset="utf-8"\nMIME-Version: 1.0\nContent-Transfer-Encoding: \
base64\nSubject: GNU MediaGoblin - chris commented on your \
post\nFrom: notice@mediagoblin.example.org\nTo: \
otherperson@example.com\n\nSGkgb3RoZXJwZXJzb24sCmNocmlzIGNvbW1lbnRlZCBvbiB5b3VyIHBvc3QgKGh0dHA6Ly9sb2Nh\nbGhvc3Q6ODAvdS9vdGhlcnBlcnNvbi9tL3NvbWUtdGl0bGUvYy8xLyNjb21tZW50KSBhdCBHTlUg\nTWVkaWFHb2JsaW4KClRlc3QgY29tbWVudCAjNDIKCkdOVSBNZWRpYUdvYmxpbg==\n',
- 'to': [u'otherperson@example.com']}]
+ 'to': [u'otherperson@example.com']}]
+ or mail.EMAIL_TEST_MBOX_INBOX == [
+ {'from': 'notice@mediagoblin.example.org',
+ 'message': 'Content-Type: text/plain; \
+charset="utf-8"\nMIME-Version: 1.0\nContent-Transfer-Encoding: \
+base64\nSubject: GNU MediaGoblin - chris commented on your \
+post\nFrom: notice@mediagoblin.example.org\nTo: \
+otherperson@example.com\n\nSGkgb3RoZXJwZXJzb24sCmNocmlzIGNvbW1lbnRlZCBvbiB5b3VyIHBvc3QgKGh0dHA6Ly9sb2Nh\nbGhvc3QvdS9vdGhlcnBlcnNvbi9tL3NvbWUtdGl0bGUvYy8xLyNjb21tZW50KSBhdCBHTlUgTWVk\naWFHb2JsaW4KClRlc3QgY29tbWVudCAjNDIKCkdOVSBNZWRpYUdvYmxpbg==\n',
+ 'to': [u'otherperson@example.com']}])
else:
assert mail.EMAIL_TEST_MBOX_INBOX == []
# Save the ids temporarily because of DetachedInstanceError
notification_id = notification.id
- comment_id = notification.subject.id
+ comment_id = notification.obj().id
self.logout()
self.login('otherperson', 'nosreprehto')
- self.test_app.get(media_uri_slug + '/c/{0}/'.format(comment_id))
+ self.test_app.get(media_uri_slug + 'c/{0}/'.format(comment_id))
notification = Notification.query.filter_by(id=notification_id).first()
assert notification.seen == True
- self.test_app.get(media_uri_slug + '/notifications/silence/')
+ self.test_app.get(media_uri_slug + 'notifications/silence/')
subscription = CommentSubscription.query.filter_by(id=subscription_id)\
.first()
diff --git a/mediagoblin/tests/test_oauth1.py b/mediagoblin/tests/test_oauth1.py
index 073c2884..e41a68c7 100644
--- a/mediagoblin/tests/test_oauth1.py
+++ b/mediagoblin/tests/test_oauth1.py
@@ -14,10 +14,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import cgi
-
import pytest
-from urlparse import parse_qs, urlparse
+
+from six.moves.urllib.parse import parse_qs, urlparse
from oauthlib.oauth1 import Client
@@ -52,8 +51,8 @@ class TestOAuth(object):
def register_client(self, **kwargs):
""" Regiters a client with the API """
-
- kwargs["type"] = "client_associate"
+
+ kwargs["type"] = "client_associate"
kwargs["application_type"] = kwargs.get("application_type", "native")
return self.test_app.post("/api/client/register", kwargs)
@@ -63,7 +62,7 @@ class TestOAuth(object):
client_info = response.json
client = self.db.Client.query.filter_by(id=client_info["client_id"]).first()
-
+
assert response.status_int == 200
assert client is not None
@@ -73,7 +72,7 @@ class TestOAuth(object):
"application_name": "Testificate MD",
"application_type": "web",
"contacts": "someone@someplace.com tuteo@tsengeo.lu",
- "logo_url": "http://ayrel.com/utral.png",
+ "logo_uri": "http://ayrel.com/utral.png",
"redirect_uris": "http://navi-kosman.lu http://gmg-yawne-oeru.lu",
}
@@ -81,12 +80,12 @@ class TestOAuth(object):
client_info = response.json
client = self.db.Client.query.filter_by(id=client_info["client_id"]).first()
-
+
assert client is not None
assert client.secret == client_info["client_secret"]
assert client.application_type == query["application_type"]
assert client.redirect_uri == query["redirect_uris"].split()
- assert client.logo_url == query["logo_url"]
+ assert client.logo_url == query["logo_uri"]
assert client.contacts == query["contacts"].split()
@@ -103,7 +102,7 @@ class TestOAuth(object):
"type": "client_update",
"application_name": "neytiri",
"contacts": "someone@someplace.com abc@cba.com",
- "logo_url": "http://place.com/picture.png",
+ "logo_uri": "http://place.com/picture.png",
"application_type": "web",
"redirect_uris": "http://blah.gmg/whatever https://inboxen.org/",
}
@@ -118,7 +117,7 @@ class TestOAuth(object):
assert client.application_type == update_query["application_type"]
assert client.application_name == update_query["application_name"]
assert client.contacts == update_query["contacts"].split()
- assert client.logo_url == update_query["logo_url"]
+ assert client.logo_url == update_query["logo_uri"]
assert client.redirect_uri == update_query["redirect_uris"].split()
def to_authorize_headers(self, data):
@@ -146,7 +145,7 @@ class TestOAuth(object):
headers["Content-Type"] = self.MIME_FORM
response = self.test_app.post(endpoint, headers=headers)
- response = cgi.parse_qs(response.body)
+ response = parse_qs(response.body.decode())
# each element is a list, reduce it to a string
for key, value in response.items():
@@ -163,4 +162,3 @@ class TestOAuth(object):
assert request_token.client == client.id
assert request_token.used == False
assert request_token.callback == request_query["oauth_callback"]
-
diff --git a/mediagoblin/tests/test_oauth2.py b/mediagoblin/tests/test_oauth2.py
deleted file mode 100644
index 957f4e65..00000000
--- a/mediagoblin/tests/test_oauth2.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import json
-import logging
-
-import pytest
-from urlparse import parse_qs, urlparse
-
-from mediagoblin import mg_globals
-from mediagoblin.tools import template, pluginapi
-from mediagoblin.tests.tools import fixture_add_user
-
-
-_log = logging.getLogger(__name__)
-
-
-class TestOAuth(object):
- @pytest.fixture(autouse=True)
- def setup(self, test_app):
- self.test_app = test_app
-
- self.db = mg_globals.database
-
- self.pman = pluginapi.PluginManager()
-
- self.user_password = u'4cc355_70k3N'
- self.user = fixture_add_user(u'joauth', self.user_password,
- privileges=[u'active'])
-
- self.login()
-
- def login(self):
- self.test_app.post(
- '/auth/login/', {
- 'username': self.user.username,
- 'password': self.user_password})
-
- def register_client(self, name, client_type, description=None,
- redirect_uri=''):
- return self.test_app.post(
- '/oauth-2/client/register', {
- 'name': name,
- 'description': description,
- 'type': client_type,
- 'redirect_uri': redirect_uri})
-
- def get_context(self, template_name):
- return template.TEMPLATE_TEST_CONTEXT[template_name]
-
- def test_1_public_client_registration_without_redirect_uri(self):
- ''' Test 'public' OAuth client registration without any redirect uri '''
- response = self.register_client(
- u'OMGOMGOMG', 'public', 'OMGOMG Apache License v2')
-
- ctx = self.get_context('oauth/client/register.html')
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.name == u'OMGOMGOMG').first()
-
- assert response.status_int == 200
-
- # Should display an error
- assert len(ctx['form'].redirect_uri.errors)
-
- # Should not pass through
- assert not client
-
- def test_2_successful_public_client_registration(self):
- ''' Successfully register a public client '''
- uri = 'http://foo.example'
- self.register_client(
- u'OMGOMG', 'public', 'OMG!', uri)
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.name == u'OMGOMG').first()
-
- # redirect_uri should be set
- assert client.redirect_uri == uri
-
- # Client should have been registered
- assert client
-
- def test_3_successful_confidential_client_reg(self):
- ''' Register a confidential OAuth client '''
- response = self.register_client(
- u'GMOGMO', 'confidential', 'NO GMO!')
-
- assert response.status_int == 302
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.name == u'GMOGMO').first()
-
- # Client should have been registered
- assert client
-
- return client
-
- def test_4_authorize_confidential_client(self):
- ''' Authorize a confidential client as a logged in user '''
- client = self.test_3_successful_confidential_client_reg()
-
- client_identifier = client.identifier
-
- redirect_uri = 'https://foo.example'
- response = self.test_app.get('/oauth-2/authorize', {
- 'client_id': client.identifier,
- 'scope': 'all',
- 'redirect_uri': redirect_uri})
-
- # User-agent should NOT be redirected
- assert response.status_int == 200
-
- ctx = self.get_context('oauth/authorize.html')
-
- form = ctx['form']
-
- # Short for client authorization post reponse
- capr = self.test_app.post(
- '/oauth-2/client/authorize', {
- 'client_id': form.client_id.data,
- 'allow': 'Allow',
- 'next': form.next.data})
-
- assert capr.status_int == 302
-
- authorization_response = capr.follow()
-
- assert authorization_response.location.startswith(redirect_uri)
-
- return authorization_response, client_identifier
-
- def get_code_from_redirect_uri(self, uri):
- ''' Get the value of ?code= from an URI '''
- return parse_qs(urlparse(uri).query)['code'][0]
-
- def test_token_endpoint_successful_confidential_request(self):
- ''' Successful request against token endpoint '''
- code_redirect, client_id = self.test_4_authorize_confidential_client()
-
- code = self.get_code_from_redirect_uri(code_redirect.location)
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.identifier == unicode(client_id)).first()
-
- token_res = self.test_app.get('/oauth-2/access_token?client_id={0}&\
-code={1}&client_secret={2}'.format(client_id, code, client.secret))
-
- assert token_res.status_int == 200
-
- token_data = json.loads(token_res.body)
-
- assert not 'error' in token_data
- assert 'access_token' in token_data
- assert 'token_type' in token_data
- assert 'expires_in' in token_data
- assert type(token_data['expires_in']) == int
- assert token_data['expires_in'] > 0
-
- # There should be a refresh token provided in the token data
- assert len(token_data['refresh_token'])
-
- return client_id, token_data
-
- def test_token_endpont_missing_id_confidential_request(self):
- ''' Unsuccessful request against token endpoint, missing client_id '''
- code_redirect, client_id = self.test_4_authorize_confidential_client()
-
- code = self.get_code_from_redirect_uri(code_redirect.location)
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.identifier == unicode(client_id)).first()
-
- token_res = self.test_app.get('/oauth-2/access_token?\
-code={0}&client_secret={1}'.format(code, client.secret))
-
- assert token_res.status_int == 200
-
- token_data = json.loads(token_res.body)
-
- assert 'error' in token_data
- assert not 'access_token' in token_data
- assert token_data['error'] == 'invalid_request'
- assert len(token_data['error_description'])
-
- def test_refresh_token(self):
- ''' Try to get a new access token using the refresh token '''
- # Get an access token and a refresh token
- client_id, token_data =\
- self.test_token_endpoint_successful_confidential_request()
-
- client = self.db.OAuthClient.query.filter(
- self.db.OAuthClient.identifier == client_id).first()
-
- token_res = self.test_app.get('/oauth-2/access_token',
- {'refresh_token': token_data['refresh_token'],
- 'client_id': client_id,
- 'client_secret': client.secret
- })
-
- assert token_res.status_int == 200
-
- new_token_data = json.loads(token_res.body)
-
- assert not 'error' in new_token_data
- assert 'access_token' in new_token_data
- assert 'token_type' in new_token_data
- assert 'expires_in' in new_token_data
- assert type(new_token_data['expires_in']) == int
- assert new_token_data['expires_in'] > 0
diff --git a/mediagoblin/tests/test_openid.py b/mediagoblin/tests/test_openid.py
index 0424fdda..71767032 100644
--- a/mediagoblin/tests/test_openid.py
+++ b/mediagoblin/tests/test_openid.py
@@ -14,17 +14,21 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse
import pkg_resources
import pytest
-import mock
+import six
+import six.moves.urllib.parse as urlparse
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
openid_consumer = pytest.importorskip(
"openid.consumer.consumer")
from mediagoblin import mg_globals
from mediagoblin.db.base import Session
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.openid.models import OpenIDUserURL
from mediagoblin.tests.tools import get_app, fixture_add_user
from mediagoblin.tools import template
@@ -188,8 +192,9 @@ class TestOpenIDPlugin(object):
openid_plugin_app.get('/auth/logout')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Log back in
@@ -206,7 +211,7 @@ class TestOpenIDPlugin(object):
# Make sure user is in the session
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
session = context['request'].session
- assert session['user_id'] == unicode(test_user.id)
+ assert session['user_id'] == six.text_type(test_user.id)
_test_new_user()
diff --git a/mediagoblin/tests/test_paste.ini b/mediagoblin/tests/test_paste.ini
index a9595432..1c5f09fa 100644
--- a/mediagoblin/tests/test_paste.ini
+++ b/mediagoblin/tests/test_paste.ini
@@ -1,40 +1,18 @@
[DEFAULT]
debug = true
-[composite:main]
-use = egg:Paste#urlmap
-/ = mediagoblin
-/mgoblin_media/ = publicstore_serve
-/test_static/ = mediagoblin_static
-/theme_static/ = theme_static
-/plugin_static/ = plugin_static
-
-[app:mediagoblin]
+[app:main]
use = egg:mediagoblin#app
config = %(here)s/mediagoblin.ini
-
-[app:publicstore_serve]
-use = egg:Paste#static
-document_root = %(here)s/user_dev/media/public
-
-[app:mediagoblin_static]
-use = egg:Paste#static
-document_root = %(here)s/mediagoblin/static/
-
-[app:theme_static]
-use = egg:Paste#static
-document_root = %(here)s/user_dev/theme_static/
-cache_max_age = 86400
-
-[app:plugin_static]
-use = egg:Paste#static
-document_root = %(here)s/user_dev/plugin_static/
-cache_max_age = 86400
+/mgoblin_media = %(here)s/user_dev/media/public
+/test_static = %(here)s/mediagoblin/static
+/theme_static = %(here)s/user_dev/theme_static
+/plugin_static = %(here)s/user_dev/plugin_static
[celery]
CELERY_ALWAYS_EAGER = true
[server:main]
-use = egg:Paste#http
+use = egg:waitress#main
host = 127.0.0.1
port = 6543
diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py
index b4d1940a..7107dc9a 100644
--- a/mediagoblin/tests/test_pdf.py
+++ b/mediagoblin/tests/test_pdf.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import collections
import tempfile
import shutil
import os
@@ -21,19 +22,25 @@ import pytest
from mediagoblin.media_types.pdf.processing import (
pdf_info, check_prerequisites, create_pdf_thumb)
-from .resources import GOOD_PDF as GOOD
+from .resources import GOOD_PDF
-@pytest.mark.skipif("not check_prerequisites()")
+@pytest.mark.skipif("not os.path.exists(GOOD_PDF) or not check_prerequisites()")
def test_pdf():
- good_dict = {'pdf_version_major': 1, 'pdf_title': '',
- 'pdf_page_size_width': 612, 'pdf_author': '',
- 'pdf_keywords': '', 'pdf_pages': 10,
- 'pdf_producer': 'dvips + GNU Ghostscript 7.05',
- 'pdf_version_minor': 3,
- 'pdf_creator': 'LaTeX with hyperref package',
- 'pdf_page_size_height': 792}
- assert pdf_info(GOOD) == good_dict
+ expected_dict = {'pdf_author': -1,
+ 'pdf_creator': -1,
+ 'pdf_keywords': -1,
+ 'pdf_page_size_height': -1,
+ 'pdf_page_size_width': -1,
+ 'pdf_pages': -1,
+ 'pdf_producer': -1,
+ 'pdf_title': -1,
+ 'pdf_version_major': 1,
+ 'pdf_version_minor': -1}
+ good_info = pdf_info(GOOD_PDF)
+ for k, v in expected_dict.items():
+ assert(k in good_info)
+ assert(v == -1 or v == good_info[k])
temp_dir = tempfile.mkdtemp()
- create_pdf_thumb(GOOD, os.path.join(temp_dir, 'good_256_256.png'), 256, 256)
+ create_pdf_thumb(GOOD_PDF, os.path.join(temp_dir, 'good_256_256.png'), 256, 256)
shutil.rmtree(temp_dir)
diff --git a/mediagoblin/tests/test_persona.py b/mediagoblin/tests/test_persona.py
index a1cd30eb..437cb7a1 100644
--- a/mediagoblin/tests/test_persona.py
+++ b/mediagoblin/tests/test_persona.py
@@ -13,16 +13,22 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urlparse
+
import pkg_resources
import pytest
-import mock
+import six
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
+
+import six.moves.urllib.parse as urlparse
pytest.importorskip("requests")
from mediagoblin import mg_globals
from mediagoblin.db.base import Session
-from mediagoblin.db.models import Privilege
+from mediagoblin.db.models import Privilege, LocalUser
from mediagoblin.tests.tools import get_app
from mediagoblin.tools import template
@@ -111,14 +117,16 @@ class TestPersonaPlugin(object):
persona_plugin_app.get('/auth/logout/')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
active_privilege = Privilege.query.filter(
Privilege.privilege_name==u'active').first()
test_user.all_privileges.append(active_privilege)
test_user.save()
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.LocalUser.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Add another user for _test_edit_persona
@@ -140,7 +148,7 @@ class TestPersonaPlugin(object):
# Make sure user is in the session
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
session = context['request'].session
- assert session['user_id'] == unicode(test_user.id)
+ assert session['user_id'] == six.text_type(test_user.id)
_test_registration()
diff --git a/mediagoblin/tests/test_piwigo.py b/mediagoblin/tests/test_piwigo.py
index 16ad0111..33aea580 100644
--- a/mediagoblin/tests/test_piwigo.py
+++ b/mediagoblin/tests/test_piwigo.py
@@ -44,28 +44,23 @@ class Test_PWG(object):
def test_session(self):
resp = self.do_post("pwg.session.login",
{"username": u"nouser", "password": "wrong"})
- assert resp.body == XML_PREFIX \
- + '<rsp stat="fail"><err code="999" msg="Invalid username/password"/></rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="fail"><err code="999" msg="Invalid username/password"/></rsp>').encode('ascii')
resp = self.do_post("pwg.session.login",
{"username": self.username, "password": "wrong"})
- assert resp.body == XML_PREFIX \
- + '<rsp stat="fail"><err code="999" msg="Invalid username/password"/></rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="fail"><err code="999" msg="Invalid username/password"/></rsp>').encode('ascii')
resp = self.do_get("pwg.session.getStatus")
- assert resp.body == XML_PREFIX \
- + '<rsp stat="ok"><username>guest</username></rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="ok"><username>guest</username></rsp>').encode('ascii')
resp = self.do_post("pwg.session.login",
{"username": self.username, "password": self.password})
- assert resp.body == XML_PREFIX + '<rsp stat="ok">1</rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="ok">1</rsp>').encode('ascii')
resp = self.do_get("pwg.session.getStatus")
- assert resp.body == XML_PREFIX \
- + '<rsp stat="ok"><username>chris</username></rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="ok"><username>chris</username></rsp>').encode('ascii')
self.do_get("pwg.session.logout")
resp = self.do_get("pwg.session.getStatus")
- assert resp.body == XML_PREFIX \
- + '<rsp stat="ok"><username>guest</username></rsp>'
+ assert resp.body == (XML_PREFIX + '<rsp stat="ok"><username>guest</username></rsp>').encode('ascii')
diff --git a/mediagoblin/tests/test_pluginapi.py b/mediagoblin/tests/test_pluginapi.py
index eae0ce15..2fd6df39 100644
--- a/mediagoblin/tests/test_pluginapi.py
+++ b/mediagoblin/tests/test_pluginapi.py
@@ -224,7 +224,7 @@ def test_hook_handle():
assert pluginapi.hook_handle(
"nothing_handling", call_log, unhandled_okay=True) is None
assert call_log == []
-
+
# Multiple provided, go with the first!
call_log = []
assert pluginapi.hook_handle(
@@ -348,7 +348,7 @@ def test_modify_context(context_modified_app):
"""
# Specific thing passed into a page
result = context_modified_app.get("/modify_context/specific/")
- assert result.body.strip() == """Specific page!
+ assert result.body.strip() == b"""Specific page!
specific thing: in yer specificpage
global thing: globally appended!
@@ -357,7 +357,7 @@ doubleme: happyhappy"""
# General test, should have global context variable only
result = context_modified_app.get("/modify_context/")
- assert result.body.strip() == """General page!
+ assert result.body.strip() == b"""General page!
global thing: globally appended!
lol: cats
@@ -421,7 +421,7 @@ def test_plugin_assetlink(static_plugin_app):
junk_file_path = os.path.join(
linked_assets_dir.rstrip(os.path.sep),
'junk.txt')
- with file(junk_file_path, 'w') as junk_file:
+ with open(junk_file_path, 'w') as junk_file:
junk_file.write('barf')
os.unlink(plugin_link_dir)
@@ -440,14 +440,14 @@ to:
# link dir exists, but is a non-symlink
os.unlink(plugin_link_dir)
- with file(plugin_link_dir, 'w') as clobber_file:
+ with open(plugin_link_dir, 'w') as clobber_file:
clobber_file.write('clobbered!')
result = run_assetlink().collection[0]
assert result == 'Could not link "staticstuff": %s exists and is not a symlink\n' % (
plugin_link_dir)
- with file(plugin_link_dir, 'r') as clobber_file:
+ with open(plugin_link_dir, 'r') as clobber_file:
assert clobber_file.read() == 'clobbered!'
@@ -456,11 +456,10 @@ def test_plugin_staticdirect(static_plugin_app):
Test that the staticdirect utilities pull up the right things
"""
result = json.loads(
- static_plugin_app.get('/staticstuff/').body)
+ static_plugin_app.get('/staticstuff/').body.decode())
assert len(result) == 2
assert result['mgoblin_bunny_pic'] == '/test_static/images/bunny_pic.png'
assert result['plugin_bunny_css'] == \
'/plugin_static/staticstuff/css/bunnify.css'
-
diff --git a/mediagoblin/tests/test_privileges.py b/mediagoblin/tests/test_privileges.py
index 05829b34..2e0b7347 100644
--- a/mediagoblin/tests/test_privileges.py
+++ b/mediagoblin/tests/test_privileges.py
@@ -14,13 +14,14 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
import pytest
from datetime import date, timedelta
from webtest import AppError
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
-from mediagoblin.db.models import User, UserBan
+from mediagoblin.db.models import User, LocalUser, UserBan
from mediagoblin.tools import template
from .resources import GOOD_JPG
@@ -63,9 +64,9 @@ class TestPrivilegeFunctionality:
return response, context_data
def query_for_users(self):
- self.admin_user = User.query.filter(User.username==u'alex').first()
- self.mod_user = User.query.filter(User.username==u'meow').first()
- self.user = User.query.filter(User.username==u'natalie').first()
+ self.admin_user = LocalUser.query.filter(LocalUser.username==u'alex').first()
+ self.mod_user = LocalUser.query.filter(LocalUser.username==u'meow').first()
+ self.user = LocalUser.query.filter(LocalUser.username==u'natalie').first()
def testUserBanned(self):
self.login(u'natalie')
@@ -79,7 +80,7 @@ class TestPrivilegeFunctionality:
response = self.test_app.get('/')
assert response.status == "200 OK"
- assert "You are Banned" in response.body
+ assert b"You are Banned" in response.body
# Then test what happens when that ban has an expiration date which
# hasn't happened yet
#----------------------------------------------------------------------
@@ -92,7 +93,7 @@ class TestPrivilegeFunctionality:
response = self.test_app.get('/')
assert response.status == "200 OK"
- assert "You are Banned" in response.body
+ assert b"You are Banned" in response.body
# Then test what happens when that ban has an expiration date which
# has already happened
@@ -107,7 +108,7 @@ class TestPrivilegeFunctionality:
response = self.test_app.get('/')
assert response.status == "302 FOUND"
- assert not "You are Banned" in response.body
+ assert not b"You are Banned" in response.body
def testVariousPrivileges(self):
# The various actions that require privileges (ex. reporting,
@@ -127,14 +128,16 @@ class TestPrivilegeFunctionality:
#----------------------------------------------------------------------
with pytest.raises(AppError) as excinfo:
response = self.test_app.get('/submit/')
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.do_post({'upload_files':[('file',GOOD_JPG)],
'title':u'Normal Upload 1'},
url='/submit/')
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
# Test that a user cannot comment without the commenter privilege
#----------------------------------------------------------------------
@@ -149,50 +152,58 @@ class TestPrivilegeFunctionality:
media_uri_slug = '/u/{0}/m/{1}/'.format(self.admin_user.username,
media_entry.slug)
response = self.test_app.get(media_uri_slug)
- assert not "Add a comment" in response.body
+ assert not b"Add a comment" in response.body
self.query_for_users()
with pytest.raises(AppError) as excinfo:
response = self.test_app.post(
media_uri_id + 'comment/add/',
{'comment_content': u'Test comment #42'})
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
# Test that a user cannot report without the reporter privilege
#----------------------------------------------------------------------
with pytest.raises(AppError) as excinfo:
response = self.test_app.get(media_uri_slug+"report/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.do_post(
{'report_reason':u'Testing Reports #1',
'reporter_id':u'3'},
url=(media_uri_slug+"report/"))
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
# Test that a user cannot access the moderation pages w/o moderator
# or admin privileges
#----------------------------------------------------------------------
with pytest.raises(AppError) as excinfo:
response = self.test_app.get("/mod/users/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.test_app.get("/mod/reports/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.test_app.get("/mod/media/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.test_app.get("/mod/users/1/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
with pytest.raises(AppError) as excinfo:
response = self.test_app.get("/mod/reports/1/")
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
self.query_for_users()
@@ -202,4 +213,5 @@ class TestPrivilegeFunctionality:
'targeted_user':self.admin_user.id},
url='/mod/reports/1/')
self.query_for_users()
- assert 'Bad response: 403 FORBIDDEN' in str(excinfo)
+ excinfo = str(excinfo) if six.PY2 else str(excinfo).encode('ascii')
+ assert b'Bad response: 403 FORBIDDEN' in excinfo
diff --git a/mediagoblin/tests/test_reporting.py b/mediagoblin/tests/test_reporting.py
index a154a061..803fc849 100644
--- a/mediagoblin/tests/test_reporting.py
+++ b/mediagoblin/tests/test_reporting.py
@@ -15,12 +15,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import pytest
+import six
from mediagoblin.tools import template
from mediagoblin.tests.tools import (fixture_add_user, fixture_media_entry,
fixture_add_comment, fixture_add_comment_report)
-from mediagoblin.db.models import (MediaReport, CommentReport, User,
- MediaComment)
+from mediagoblin.db.models import Report, User, LocalUser, TextComment
class TestReportFiling:
@@ -55,8 +55,8 @@ class TestReportFiling:
return response, context_data
def query_for_users(self):
- return (User.query.filter(User.username==u'allie').first(),
- User.query.filter(User.username==u'natalie').first())
+ return (LocalUser.query.filter(LocalUser.username==u'allie').first(),
+ LocalUser.query.filter(LocalUser.username==u'natalie').first())
def testMediaReports(self):
self.login(u'allie')
@@ -75,11 +75,11 @@ class TestReportFiling:
response, context = self.do_post(
{'report_reason':u'Testing Media Report',
- 'reporter_id':unicode(allie_id)},url= media_uri_slug + "report/")
+ 'reporter_id':six.text_type(allie_id)},url= media_uri_slug + "report/")
assert response.status == "302 FOUND"
- media_report = MediaReport.query.first()
+ media_report = Report.query.first()
allie_user, natalie_user = self.query_for_users()
assert media_report is not None
@@ -87,7 +87,6 @@ class TestReportFiling:
assert media_report.reporter_id == allie_id
assert media_report.reported_user_id == natalie_user.id
assert media_report.created is not None
- assert media_report.discriminator == 'media_report'
def testCommentReports(self):
self.login(u'allie')
@@ -97,9 +96,11 @@ class TestReportFiling:
media_entry = fixture_media_entry(uploader=natalie_user.id,
state=u'processed')
mid = media_entry.id
- fixture_add_comment(media_entry=mid,
- author=natalie_user.id)
- comment = MediaComment.query.first()
+ fixture_add_comment(
+ media_entry=media_entry,
+ author=natalie_user.id
+ )
+ comment = TextComment.query.first()
comment_uri_slug = '/u/{0}/m/{1}/c/{2}/'.format(natalie_user.username,
media_entry.slug,
@@ -110,11 +111,11 @@ class TestReportFiling:
response, context = self.do_post({
'report_reason':u'Testing Comment Report',
- 'reporter_id':unicode(allie_id)},url= comment_uri_slug + "report/")
+ 'reporter_id':six.text_type(allie_id)},url= comment_uri_slug + "report/")
assert response.status == "302 FOUND"
- comment_report = CommentReport.query.first()
+ comment_report = Report.query.first()
allie_user, natalie_user = self.query_for_users()
assert comment_report is not None
@@ -122,7 +123,6 @@ class TestReportFiling:
assert comment_report.reporter_id == allie_id
assert comment_report.reported_user_id == natalie_user.id
assert comment_report.created is not None
- assert comment_report.discriminator == 'comment_report'
def testArchivingReports(self):
self.login(u'natalie')
@@ -131,14 +131,14 @@ class TestReportFiling:
fixture_add_comment(author=allie_user.id,
comment=u'Comment will be removed')
- test_comment = MediaComment.query.filter(
- MediaComment.author==allie_user.id).first()
+ test_comment = TextComment.query.filter(
+ TextComment.actor==allie_user.id).first()
fixture_add_comment_report(comment=test_comment,
reported_user=allie_user,
report_content=u'Testing Archived Reports #1',
reporter=natalie_user)
- comment_report = CommentReport.query.filter(
- CommentReport.reported_user==allie_user).first()
+ comment_report = Report.query.filter(
+ Report.reported_user==allie_user).first()
assert comment_report.report_content == u'Testing Archived Reports #1'
response, context = self.do_post(
@@ -150,10 +150,10 @@ class TestReportFiling:
assert response.status == "302 FOUND"
allie_user, natalie_user = self.query_for_users()
- archived_report = CommentReport.query.filter(
- CommentReport.reported_user==allie_user).first()
+ archived_report = Report.query.filter(
+ Report.reported_user==allie_user).first()
- assert CommentReport.query.count() != 0
+ assert Report.query.count() != 0
assert archived_report is not None
assert archived_report.report_content == u'Testing Archived Reports #1'
assert archived_report.reporter_id == natalie_id
@@ -163,5 +163,3 @@ class TestReportFiling:
assert archived_report.result == u'''This is a test of archiving reports.
natalie banned user allie indefinitely.
natalie deleted the comment.'''
- assert archived_report.discriminator == 'comment_report'
-
diff --git a/mediagoblin/tests/test_response.py b/mediagoblin/tests/test_response.py
new file mode 100644
index 00000000..7f929155
--- /dev/null
+++ b/mediagoblin/tests/test_response.py
@@ -0,0 +1,65 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import absolute_import, unicode_literals
+
+from werkzeug.wrappers import Request
+
+from ..tools.response import redirect, redirect_obj
+
+class TestRedirect(object):
+ def test_redirect_respects_location(self):
+ """Test that redirect returns a 302 to location specified."""
+ request = Request({})
+ response = redirect(request, location='/test')
+ assert response.status_code == 302
+ assert response.location == '/test'
+
+ def test_redirect_respects_querystring(self):
+ """Test that redirect includes querystring in returned location."""
+ request = Request({})
+ response = redirect(request, location='', querystring='#baz')
+ assert response.location == '#baz'
+
+ def test_redirect_respects_urlgen_args(self):
+ """Test that redirect returns a 302 to location from urlgen args."""
+
+ # Using a mock urlgen here so we're only testing redirect itself. We
+ # could instantiate a url_map and map_adaptor with WSGI environ as per
+ # app.py, but that would really just be testing Werkzeug.
+ def urlgen(endpoint, **kwargs):
+ return '/test?foo=bar'
+
+ request = Request({})
+ request.urlgen = urlgen
+ response = redirect(request, 'test-endpoint', foo='bar')
+ assert response.status_code == 302
+ assert response.location == '/test?foo=bar'
+
+ def test_redirect_obj_calls_url_for_self(self):
+ """Test that redirect_obj returns a 302 to obj's url_for_self()."""
+
+ # Using a mock obj here so that we're only testing redirect_obj itself,
+ # rather than also testing the url_for_self implementation.
+ class Foo(object):
+ def url_for_self(*args, **kwargs):
+ return '/foo'
+
+ request = Request({})
+ request.urlgen = None
+ response = redirect_obj(request, Foo())
+ assert response.status_code == 302
+ assert response.location == '/foo'
diff --git a/mediagoblin/tests/test_sql_migrations.py b/mediagoblin/tests/test_sql_migrations.py
index 3d67fdf6..97d7da09 100644
--- a/mediagoblin/tests/test_sql_migrations.py
+++ b/mediagoblin/tests/test_sql_migrations.py
@@ -14,6 +14,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+import pytest
+
+pytest.importorskip("migrate")
+
import copy
from sqlalchemy import (
@@ -23,7 +28,11 @@ from sqlalchemy import (
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import select, insert
-from migrate import changeset
+try:
+ from migrate import changeset
+except ImportError:
+ # We'll be skipping in this case anyway
+ pass
from mediagoblin.db.base import GMGTableBase
from mediagoblin.db.migration_tools import MigrationManager, RegisterMigration
@@ -58,10 +67,6 @@ class Level1(Base1):
SET1_MODELS = [Creature1, Level1]
-FOUNDATIONS = {Creature1:[{'name':u'goblin','num_legs':2,'is_demon':False},
- {'name':u'cerberus','num_legs':4,'is_demon':True}]
- }
-
SET1_MIGRATIONS = {}
#######################################################
@@ -190,7 +195,7 @@ def level_exits_new_table(db_conn):
for level in result:
- for exit_name, to_level in level['exits'].iteritems():
+ for exit_name, to_level in six.iteritems(level['exits']):
# Insert the level exit
db_conn.execute(
level_exits.insert().values(
@@ -575,7 +580,7 @@ def test_set1_to_set3():
printer = CollectingPrinter()
migration_manager = MigrationManager(
- u'__main__', SET1_MODELS, FOUNDATIONS, SET1_MIGRATIONS, Session(),
+ u'__main__', SET1_MODELS, SET1_MIGRATIONS, Session(),
printer)
# Check latest migration and database current migration
@@ -588,8 +593,7 @@ def test_set1_to_set3():
assert result == u'inited'
# Check output
assert printer.combined_string == (
- "-> Initializing main mediagoblin tables... done.\n" + \
- " + Laying foundations for Creature1 table\n" )
+ "-> Initializing main mediagoblin tables... done.\n")
# Check version in database
assert migration_manager.latest_migration == 0
assert migration_manager.database_current_migration == 0
@@ -602,7 +606,7 @@ def test_set1_to_set3():
# Try to "re-migrate" with same manager settings... nothing should happen
migration_manager = MigrationManager(
- u'__main__', SET1_MODELS, FOUNDATIONS, SET1_MIGRATIONS,
+ u'__main__', SET1_MODELS, SET1_MIGRATIONS,
Session(), printer)
assert migration_manager.init_or_migrate() == None
@@ -644,18 +648,6 @@ def test_set1_to_set3():
# Now check to see if stuff seems to be in there.
session = Session()
- # Check the creation of the foundation rows on the creature table
- creature = session.query(Creature1).filter_by(
- name=u'goblin').one()
- assert creature.num_legs == 2
- assert creature.is_demon == False
-
- creature = session.query(Creature1).filter_by(
- name=u'cerberus').one()
- assert creature.num_legs == 4
- assert creature.is_demon == True
-
-
# Check the creation of the inserted rows on the creature and levels tables
creature = session.query(Creature1).filter_by(
@@ -698,7 +690,7 @@ def test_set1_to_set3():
# isn't said to be updated yet
printer = CollectingPrinter()
migration_manager = MigrationManager(
- u'__main__', SET3_MODELS, FOUNDATIONS, SET3_MIGRATIONS, Session(),
+ u'__main__', SET3_MODELS, SET3_MIGRATIONS, Session(),
printer)
assert migration_manager.latest_migration == 8
@@ -725,7 +717,7 @@ def test_set1_to_set3():
# Make sure version matches expected
migration_manager = MigrationManager(
- u'__main__', SET3_MODELS, FOUNDATIONS, SET3_MIGRATIONS, Session(),
+ u'__main__', SET3_MODELS, SET3_MIGRATIONS, Session(),
printer)
assert migration_manager.latest_migration == 8
assert migration_manager.database_current_migration == 8
@@ -793,12 +785,6 @@ def test_set1_to_set3():
session = Session()
- # Start with making sure that the foundations did not run again
- assert session.query(Creature3).filter_by(
- name=u'goblin').count() == 1
- assert session.query(Creature3).filter_by(
- name=u'cerberus').count() == 1
-
# Then make sure the models have been migrated correctly
creature = session.query(Creature3).filter_by(
name=u'centipede').one()
diff --git a/mediagoblin/tests/test_storage.py b/mediagoblin/tests/test_storage.py
index f6f1d18f..a4c3e4eb 100644
--- a/mediagoblin/tests/test_storage.py
+++ b/mediagoblin/tests/test_storage.py
@@ -19,6 +19,8 @@ import os
import tempfile
import pytest
+import six
+
from werkzeug.utils import secure_filename
from mediagoblin import storage
@@ -45,7 +47,7 @@ def test_clean_listy_filepath():
storage.clean_listy_filepath(['../../', 'linooks.jpg'])
-class FakeStorageSystem():
+class FakeStorageSystem(object):
def __init__(self, foobie, blech, **kwargs):
self.foobie = foobie
self.blech = blech
@@ -78,8 +80,8 @@ def test_storage_system_from_config():
'mediagoblin.tests.test_storage:FakeStorageSystem'})
assert this_storage.foobie == 'eiboof'
assert this_storage.blech == 'hcelb'
- assert unicode(this_storage.__class__) == \
- u'mediagoblin.tests.test_storage.FakeStorageSystem'
+ assert six.text_type(this_storage.__class__) == \
+ u"<class 'mediagoblin.tests.test_storage.FakeStorageSystem'>"
##########################
@@ -168,11 +170,11 @@ def test_basic_storage_get_file():
filepath = ['dir1', 'dir2', 'ourfile.txt']
with this_storage.get_file(filepath, 'w') as our_file:
- our_file.write('First file')
+ our_file.write(b'First file')
with this_storage.get_file(filepath, 'r') as our_file:
- assert our_file.read() == 'First file'
+ assert our_file.read() == b'First file'
assert os.path.exists(os.path.join(tmpdir, 'dir1/dir2/ourfile.txt'))
- with file(os.path.join(tmpdir, 'dir1/dir2/ourfile.txt'), 'r') as our_file:
+ with open(os.path.join(tmpdir, 'dir1/dir2/ourfile.txt'), 'r') as our_file:
assert our_file.read() == 'First file'
# Write to the same path but try to get a unique file.
@@ -180,21 +182,21 @@ def test_basic_storage_get_file():
assert not os.path.exists(os.path.join(tmpdir, *new_filepath))
with this_storage.get_file(new_filepath, 'w') as our_file:
- our_file.write('Second file')
+ our_file.write(b'Second file')
with this_storage.get_file(new_filepath, 'r') as our_file:
- assert our_file.read() == 'Second file'
+ assert our_file.read() == b'Second file'
assert os.path.exists(os.path.join(tmpdir, *new_filepath))
- with file(os.path.join(tmpdir, *new_filepath), 'r') as our_file:
+ with open(os.path.join(tmpdir, *new_filepath), 'r') as our_file:
assert our_file.read() == 'Second file'
# Read from an existing file
manually_written_file = os.makedirs(
os.path.join(tmpdir, 'testydir'))
- with file(os.path.join(tmpdir, 'testydir/testyfile.txt'), 'w') as testyfile:
+ with open(os.path.join(tmpdir, 'testydir/testyfile.txt'), 'w') as testyfile:
testyfile.write('testy file! so testy.')
with this_storage.get_file(['testydir', 'testyfile.txt']) as testyfile:
- assert testyfile.read() == 'testy file! so testy.'
+ assert testyfile.read() == b'testy file! so testy.'
this_storage.delete_file(filepath)
this_storage.delete_file(new_filepath)
@@ -210,7 +212,7 @@ def test_basic_storage_delete_file():
filepath = ['dir1', 'dir2', 'ourfile.txt']
with this_storage.get_file(filepath, 'w') as our_file:
- our_file.write('Testing this file')
+ our_file.write(b'Testing this file')
assert os.path.exists(
os.path.join(tmpdir, 'dir1/dir2/ourfile.txt'))
@@ -279,14 +281,14 @@ def test_basic_storage_copy_locally():
filepath = ['dir1', 'dir2', 'ourfile.txt']
with this_storage.get_file(filepath, 'w') as our_file:
- our_file.write('Testing this file')
+ our_file.write(b'Testing this file')
new_file_dest = os.path.join(dest_tmpdir, 'file2.txt')
this_storage.copy_locally(filepath, new_file_dest)
this_storage.delete_file(filepath)
- assert file(new_file_dest).read() == 'Testing this file'
+ assert open(new_file_dest).read() == 'Testing this file'
os.remove(new_file_dest)
os.rmdir(dest_tmpdir)
@@ -295,7 +297,7 @@ def test_basic_storage_copy_locally():
def _test_copy_local_to_storage_works(tmpdir, this_storage):
local_filename = tempfile.mktemp()
- with file(local_filename, 'w') as tmpfile:
+ with open(local_filename, 'w') as tmpfile:
tmpfile.write('haha')
this_storage.copy_local_to_storage(
@@ -303,7 +305,7 @@ def _test_copy_local_to_storage_works(tmpdir, this_storage):
os.remove(local_filename)
- assert file(
+ assert open(
os.path.join(tmpdir, 'dir1/dir2/copiedto.txt'),
'r').read() == 'haha'
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index b5b13ed3..f51b132c 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -14,17 +14,46 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import sys
-reload(sys)
-sys.setdefaultencoding('utf-8')
+## Optional audio/video stuff
+
+SKIP_AUDIO = False
+SKIP_VIDEO = False
+
+try:
+ import gi.repository.Gst
+ # this gst initialization stuff is really required here
+ import gi
+ gi.require_version('Gst', '1.0')
+ from gi.repository import Gst
+ Gst.init(None)
+ from .media_tools import create_av
+except ImportError:
+ SKIP_AUDIO = True
+ SKIP_VIDEO = True
+
+try:
+ import scikits.audiolab
+except ImportError:
+ SKIP_AUDIO = True
+
+import six
+
+if six.PY2: # this hack only work in Python 2
+ import sys
+ reload(sys)
+ sys.setdefaultencoding('utf-8')
-import urlparse
import os
import pytest
+import webtest.forms
+import pkg_resources
-from mediagoblin.tests.tools import fixture_add_user
+import six.moves.urllib.parse as urlparse
+
+from mediagoblin.tests.tools import (
+ fixture_add_user, fixture_add_collection, get_app)
from mediagoblin import mg_globals
-from mediagoblin.db.models import MediaEntry, User
+from mediagoblin.db.models import MediaEntry, User, LocalUser, Activity
from mediagoblin.db.base import Session
from mediagoblin.tools import template
from mediagoblin.media_types.image import ImageMediaManager
@@ -34,13 +63,46 @@ from .resources import GOOD_JPG, GOOD_PNG, EVIL_FILE, EVIL_JPG, EVIL_PNG, \
BIG_BLUE, GOOD_PDF, GPS_JPG, MED_PNG, BIG_PNG
GOOD_TAG_STRING = u'yin,yang'
-BAD_TAG_STRING = unicode('rage,' + 'f' * 26 + 'u' * 26)
+BAD_TAG_STRING = six.text_type('rage,' + 'f' * 26 + 'u' * 26)
FORM_CONTEXT = ['mediagoblin/submit/start.html', 'submit_form']
REQUEST_CONTEXT = ['mediagoblin/user_pages/user.html', 'request']
-class TestSubmission:
+@pytest.fixture()
+def audio_plugin_app(request):
+ return get_app(
+ request,
+ mgoblin_config=pkg_resources.resource_filename(
+ 'mediagoblin.tests',
+ 'test_mgoblin_app_audio.ini'))
+
+@pytest.fixture()
+def video_plugin_app(request):
+ return get_app(
+ request,
+ mgoblin_config=pkg_resources.resource_filename(
+ 'mediagoblin.tests',
+ 'test_mgoblin_app_video.ini'))
+
+@pytest.fixture()
+def audio_video_plugin_app(request):
+ return get_app(
+ request,
+ mgoblin_config=pkg_resources.resource_filename(
+ 'mediagoblin.tests',
+ 'test_mgoblin_app_audio_video.ini'))
+
+@pytest.fixture()
+def pdf_plugin_app(request):
+ return get_app(
+ request,
+ mgoblin_config=pkg_resources.resource_filename(
+ 'mediagoblin.tests',
+ 'test_mgoblin_app_pdf.ini'))
+
+
+class BaseTestSubmission:
@pytest.fixture(autouse=True)
def setup(self, test_app):
self.test_app = test_app
@@ -61,7 +123,7 @@ class TestSubmission:
#### totally stupid.
#### Also if we found a way to make this run it should be a
#### property.
- return User.query.filter(User.username==u'chris').first()
+ return LocalUser.query.filter(LocalUser.username==u'chris').first()
def login(self):
self.test_app.post(
@@ -88,19 +150,14 @@ class TestSubmission:
return {'upload_files': [('file', filename)]}
def check_comments(self, request, media_id, count):
- comments = request.db.MediaComment.query.filter_by(media_entry=media_id)
- assert count == len(list(comments))
-
- def test_missing_fields(self):
- # Test blank form
- # ---------------
- response, form = self.do_post({}, *FORM_CONTEXT)
- assert form.file.errors == [u'You must provide a file.']
-
- # Test blank file
- # ---------------
- response, form = self.do_post({'title': u'test title'}, *FORM_CONTEXT)
- assert form.file.errors == [u'You must provide a file.']
+ gmr = request.db.GenericModelReference.query.filter_by(
+ obj_pk=media_id,
+ model_type=request.db.MediaEntry.__tablename__
+ ).first()
+ if gmr is None and count <= 0:
+ return # Yerp it's fine.
+ comments = request.db.Comment.query.filter_by(target_id=gmr.id)
+ assert count == comments.count()
def check_url(self, response, path):
assert urlparse.urlsplit(response.location)[2] == path
@@ -129,6 +186,19 @@ class TestSubmission:
our_user.save()
Session.expunge(our_user)
+
+class TestSubmissionBasics(BaseTestSubmission):
+ def test_missing_fields(self):
+ # Test blank form
+ # ---------------
+ response, form = self.do_post({}, *FORM_CONTEXT)
+ assert form.file.errors == [u'You must provide a file.']
+
+ # Test blank file
+ # ---------------
+ response, form = self.do_post({'title': u'test title'}, *FORM_CONTEXT)
+ assert form.file.errors == [u'You must provide a file.']
+
def test_normal_jpg(self):
# User uploaded should be 0
assert self.our_user().uploaded == 0
@@ -142,17 +212,19 @@ class TestSubmission:
# Reload user
assert self.our_user().uploaded == file_size
+ def test_public_id_populated(self):
+ # Upload the image first.
+ response, request = self.do_post({'title': u'Balanced Goblin'},
+ *REQUEST_CONTEXT, do_follow=True,
+ **self.upload_data(GOOD_JPG))
+ media = self.check_media(request, {'title': u'Balanced Goblin'}, 1)
+
+ # Now check that the public_id attribute is set.
+ assert media.public_id != None
+
def test_normal_png(self):
self.check_normal_upload(u'Normal upload 2', GOOD_PNG)
- @pytest.mark.skipif("not pdf_check_prerequisites()")
- def test_normal_pdf(self):
- response, context = self.do_post({'title': u'Normal upload 3 (pdf)'},
- do_follow=True,
- **self.upload_data(GOOD_PDF))
- self.check_url(response, '/u/{0}/'.format(self.our_user().username))
- assert 'mediagoblin/user_pages/user.html' in context
-
def test_default_upload_limits(self):
self.user_upload_limits(uploaded=500)
@@ -359,7 +431,7 @@ class TestSubmission:
def test_media_data(self):
self.check_normal_upload(u"With GPS data", GPS_JPG)
media = self.check_media(None, {"title": u"With GPS data"}, 1)
- assert media.media_data.gps_latitude == 59.336666666666666
+ assert media.get_location.position["latitude"] == 59.336666666666666
def test_processing(self):
public_store_dir = mg_globals.global_config[
@@ -382,3 +454,140 @@ class TestSubmission:
size = os.stat(filename).st_size
assert last_size > size
last_size = size
+
+ def test_collection_selection(self):
+ """Test the ability to choose a collection when submitting media
+ """
+ # Collection option should have been removed if the user has no
+ # collections.
+ response = self.test_app.get('/submit/')
+ assert 'collection' not in response.form.fields
+
+ # Test upload of an image when a user has no collections.
+ upload = webtest.forms.Upload(os.path.join(
+ 'mediagoblin', 'static', 'images', 'media_thumbs', 'image.png'))
+ response.form['file'] = upload
+ no_collection_title = 'no collection'
+ response.form['title'] = no_collection_title
+ response.form.submit()
+ assert MediaEntry.query.filter_by(
+ actor=self.our_user().id
+ ).first().title == no_collection_title
+
+ # Collection option should be present if the user has collections. It
+ # shouldn't allow other users' collections to be selected.
+ col = fixture_add_collection(user=self.our_user())
+ user = fixture_add_user(username=u'different')
+ fixture_add_collection(user=user, name=u'different')
+ response = self.test_app.get('/submit/')
+ form = response.form
+ assert 'collection' in form.fields
+ # Option length is 2, because of the default "--Select--" option
+ assert len(form['collection'].options) == 2
+ assert form['collection'].options[1][2] == col.title
+
+ # Test that if we specify a collection then the media entry is added to
+ # the specified collection.
+ form['file'] = upload
+ title = 'new picture'
+ form['title'] = title
+ form['collection'] = form['collection'].options[1][0]
+ form.submit()
+ # The title of the first item in our user's first collection should
+ # match the title of the picture that was just added.
+ col = self.our_user().collections[0]
+ assert col.collection_items[0].get_object().title == title
+
+ # Test that an activity was created when the item was added to the
+ # collection. That should be the last activity.
+ assert Activity.query.order_by(
+ Activity.id.desc()
+ ).first().content == '{0} added new picture to {1}'.format(
+ self.our_user().username, col.title)
+
+ # Test upload succeeds if the user has collection and no collection is
+ # chosen.
+ form['file'] = webtest.forms.Upload(os.path.join(
+ 'mediagoblin', 'static', 'images', 'media_thumbs', 'image.png'))
+ title = 'no collection 2'
+ form['title'] = title
+ form['collection'] = form['collection'].options[0][0]
+ form.submit()
+ # The title of the first item in our user's first collection should
+ # match the title of the picture that was just added.
+ assert MediaEntry.query.filter_by(
+ actor=self.our_user().id
+ ).count() == 3
+
+class TestSubmissionVideo(BaseTestSubmission):
+ @pytest.fixture(autouse=True)
+ def setup(self, video_plugin_app):
+ self.test_app = video_plugin_app
+
+ # TODO: Possibly abstract into a decorator like:
+ # @as_authenticated_user('chris')
+ fixture_add_user(privileges=[u'active',u'uploader', u'commenter'])
+
+ self.login()
+
+ @pytest.mark.skipif(SKIP_VIDEO,
+ reason="Dependencies for video not met")
+ def test_video(self, video_plugin_app):
+ with create_av(make_video=True) as path:
+ self.check_normal_upload('Video', path)
+
+
+class TestSubmissionAudio(BaseTestSubmission):
+ @pytest.fixture(autouse=True)
+ def setup(self, audio_plugin_app):
+ self.test_app = audio_plugin_app
+
+ # TODO: Possibly abstract into a decorator like:
+ # @as_authenticated_user('chris')
+ fixture_add_user(privileges=[u'active',u'uploader', u'commenter'])
+
+ self.login()
+
+ @pytest.mark.skipif(SKIP_AUDIO,
+ reason="Dependencies for audio not met")
+ def test_audio(self, audio_plugin_app):
+ with create_av(make_audio=True) as path:
+ self.check_normal_upload('Audio', path)
+
+
+class TestSubmissionAudioVideo(BaseTestSubmission):
+ @pytest.fixture(autouse=True)
+ def setup(self, audio_video_plugin_app):
+ self.test_app = audio_video_plugin_app
+
+ # TODO: Possibly abstract into a decorator like:
+ # @as_authenticated_user('chris')
+ fixture_add_user(privileges=[u'active',u'uploader', u'commenter'])
+
+ self.login()
+
+ @pytest.mark.skipif(SKIP_AUDIO or SKIP_VIDEO,
+ reason="Dependencies for audio or video not met")
+ def test_audio_and_video(self):
+ with create_av(make_audio=True, make_video=True) as path:
+ self.check_normal_upload('Audio and Video', path)
+
+
+class TestSubmissionPDF(BaseTestSubmission):
+ @pytest.fixture(autouse=True)
+ def setup(self, pdf_plugin_app):
+ self.test_app = pdf_plugin_app
+
+ # TODO: Possibly abstract into a decorator like:
+ # @as_authenticated_user('chris')
+ fixture_add_user(privileges=[u'active',u'uploader', u'commenter'])
+
+ self.login()
+
+ @pytest.mark.skipif("not os.path.exists(GOOD_PDF) or not pdf_check_prerequisites()")
+ def test_normal_pdf(self):
+ response, context = self.do_post({'title': u'Normal upload 3 (pdf)'},
+ do_follow=True,
+ **self.upload_data(GOOD_PDF))
+ self.check_url(response, '/u/{0}/'.format(self.our_user().username))
+ assert 'mediagoblin/user_pages/user.html' in context
diff --git a/mediagoblin/tests/test_submission/good.pdf b/mediagoblin/tests/test_submission/good.pdf
index ab5db006..d7029f36 100644..120000
--- a/mediagoblin/tests/test_submission/good.pdf
+++ b/mediagoblin/tests/test_submission/good.pdf
Binary files differ
diff --git a/mediagoblin/tests/test_tags.py b/mediagoblin/tests/test_tags.py
index e25cc283..8358b052 100644
--- a/mediagoblin/tests/test_tags.py
+++ b/mediagoblin/tests/test_tags.py
@@ -33,6 +33,10 @@ def test_list_of_dicts_conversion(test_app):
assert text.convert_to_tag_list_of_dicts('echo,echo') == [{'name': u'echo',
'slug': u'echo'}]
+ # When checking for duplicates, use the slug, not the tag
+ assert text.convert_to_tag_list_of_dicts('echo,#echo') == [{'name': u'#echo',
+ 'slug': u'echo'}]
+
# Make sure converting the list of dicts to a string works
assert text.media_tags_as_string([{'name': u'yin', 'slug': u'yin'},
{'name': u'yang', 'slug': u'yang'}]) == \
diff --git a/mediagoblin/tests/test_timesince.py b/mediagoblin/tests/test_timesince.py
index 6579eb09..99ae31da 100644
--- a/mediagoblin/tests/test_timesince.py
+++ b/mediagoblin/tests/test_timesince.py
@@ -16,7 +16,7 @@
from datetime import datetime, timedelta
-from mediagoblin.tools.timesince import is_aware, timesince
+from mediagoblin.tools.timesince import timesince
def test_timesince():
diff --git a/mediagoblin/tests/test_tools.py b/mediagoblin/tests/test_tools.py
new file mode 100644
index 00000000..5f916400
--- /dev/null
+++ b/mediagoblin/tests/test_tools.py
@@ -0,0 +1,118 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import absolute_import, unicode_literals
+
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
+
+from werkzeug.wrappers import Request
+from werkzeug.test import EnvironBuilder
+
+from mediagoblin.tools.request import decode_request
+from mediagoblin.tools.pagination import Pagination
+
+class TestDecodeRequest(object):
+ """Test the decode_request function."""
+
+ def test_form_type(self):
+ """Try a normal form-urlencoded request."""
+ builder = EnvironBuilder(method='POST', data={'foo': 'bar'})
+ request = Request(builder.get_environ())
+ data = decode_request(request)
+ assert data['foo'] == 'bar'
+
+ def test_json_type(self):
+ """Try a normal JSON request."""
+ builder = EnvironBuilder(
+ method='POST', content_type='application/json',
+ data='{"foo": "bar"}')
+ request = Request(builder.get_environ())
+ data = decode_request(request)
+ assert data['foo'] == 'bar'
+
+ def test_content_type_with_options(self):
+ """Content-Type can also have options."""
+ builder = EnvironBuilder(
+ method='POST',
+ content_type='application/x-www-form-urlencoded; charset=utf-8')
+ request = Request(builder.get_environ())
+ # Must populate form field manually with non-default content-type.
+ request.form = {'foo': 'bar'}
+ data = decode_request(request)
+ assert data['foo'] == 'bar'
+
+ def test_form_type_is_default(self):
+ """Assume form-urlencoded if blank in the request."""
+ builder = EnvironBuilder(method='POST', content_type='')
+ request = Request(builder.get_environ())
+ # Must populate form field manually with non-default content-type.
+ request.form = {'foo': 'bar'}
+ data = decode_request(request)
+ assert data['foo'] == 'bar'
+
+
+class TestPagination(object):
+ def _create_paginator(self, num_items, page, per_page):
+ """Create a Paginator with a mock database cursor."""
+ mock_cursor = mock.MagicMock()
+ mock_cursor.count.return_value = num_items
+ return Pagination(page, mock_cursor, per_page)
+
+ def test_creates_valid_page_url_from_explicit_base_url(self):
+ """Check that test_page_url_explicit runs.
+
+ This is a regression test for a Python 2/3 compatibility fix.
+
+ """
+ paginator = self._create_paginator(num_items=1, page=1, per_page=30)
+ url = paginator.get_page_url_explicit('http://example.com', [], 1)
+ assert url == 'http://example.com?page=1'
+
+ def test_iter_pages_handles_single_page(self):
+ """Check that iter_pages produces the expected result for single page.
+
+ This is a regression test for a Python 2/3 compatibility fix.
+
+ """
+ paginator = self._create_paginator(num_items=1, page=1, per_page=30)
+ assert list(paginator.iter_pages()) == [1]
+
+ def test_zero_items(self):
+ """Check that no items produces no pages."""
+ paginator = self._create_paginator(num_items=0, page=1, per_page=30)
+ assert paginator.total_count == 0
+ assert paginator.pages == 0
+
+ def test_single_item(self):
+ """Check that one item produces one page."""
+ paginator = self._create_paginator(num_items=1, page=1, per_page=30)
+ assert paginator.total_count == 1
+ assert paginator.pages == 1
+
+ def test_full_page(self):
+ """Check that a full page of items produces one page."""
+ paginator = self._create_paginator(num_items=30, page=1, per_page=30)
+ assert paginator.total_count == 30
+ assert paginator.pages == 1
+
+ def test_multiple_pages(self):
+ """Check that more than a full page produces two pages."""
+ paginator = self._create_paginator(num_items=31, page=1, per_page=30)
+ assert paginator.total_count == 31
+ assert paginator.pages == 2
diff --git a/mediagoblin/tests/test_util.py b/mediagoblin/tests/test_util.py
index 9d9b1c16..02976405 100644
--- a/mediagoblin/tests/test_util.py
+++ b/mediagoblin/tests/test_util.py
@@ -14,8 +14,20 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+try:
+ import mock
+except ImportError:
+ import unittest.mock as mock
import email
+import socket
+import pytest
+import smtplib
+import pkg_resources
+import six
+
+from mediagoblin.tests.tools import get_app
+from mediagoblin import mg_globals
from mediagoblin.tools import common, url, translate, mail, text, testing
testing._activate_testing()
@@ -52,7 +64,7 @@ I hope you like unit tests JUST AS MUCH AS I DO!""")
assert message['From'] == "sender@mediagoblin.example.org"
assert message['To'] == "amanda@example.org, akila@example.org"
assert message['Subject'] == "Testing is so much fun!"
- assert message.get_payload(decode=True) == """HAYYY GUYS!
+ assert message.get_payload(decode=True) == b"""HAYYY GUYS!
I hope you like unit tests JUST AS MUCH AS I DO!"""
@@ -65,10 +77,32 @@ I hope you like unit tests JUST AS MUCH AS I DO!"""
assert mbox_message['From'] == "sender@mediagoblin.example.org"
assert mbox_message['To'] == "amanda@example.org, akila@example.org"
assert mbox_message['Subject'] == "Testing is so much fun!"
- assert mbox_message.get_payload(decode=True) == """HAYYY GUYS!
+ assert mbox_message.get_payload(decode=True) == b"""HAYYY GUYS!
I hope you like unit tests JUST AS MUCH AS I DO!"""
+@pytest.fixture()
+def starttls_enabled_app(request):
+ return get_app(
+ request,
+ mgoblin_config=pkg_resources.resource_filename(
+ "mediagoblin.tests",
+ "starttls_config.ini"
+ )
+ )
+
+def test_email_force_starttls(starttls_enabled_app):
+ common.TESTS_ENABLED = False
+ SMTP = lambda *args, **kwargs: mail.FakeMhost()
+ with mock.patch('smtplib.SMTP', SMTP):
+ with pytest.raises(smtplib.SMTPException):
+ mail.send_email(
+ from_addr="notices@my.test.instance.com",
+ to_addrs="someone@someplace.com",
+ subject="Testing is so much fun!",
+ message_body="Ohai ^_^"
+ )
+
def test_slugify():
assert url.slugify(u'a walk in the park') == u'a-walk-in-the-park'
assert url.slugify(u'A Walk in the Park') == u'a-walk-in-the-park'
@@ -117,13 +151,13 @@ def test_gettext_lazy_proxy():
orig = u"Password"
set_thread_locale("es")
- p1 = unicode(proxy)
+ p1 = six.text_type(proxy)
p1_should = pass_to_ugettext(orig)
assert p1_should != orig, "Test useless, string not translated"
assert p1 == p1_should
set_thread_locale("sv")
- p2 = unicode(proxy)
+ p2 = six.text_type(proxy)
p2_should = pass_to_ugettext(orig)
assert p2_should != orig, "Test broken, string not translated"
assert p2 == p2_should
@@ -149,3 +183,30 @@ def test_html_cleaner():
'<p><a href="javascript:nasty_surprise">innocent link!</a></p>')
assert result == (
'<p><a href="">innocent link!</a></p>')
+
+
+class TestMail(object):
+ """ Test mediagoblin's mail tool """
+ def test_no_mail_server(self):
+ """ Tests that no smtp server is available """
+ with pytest.raises(mail.NoSMTPServerError), mock.patch("smtplib.SMTP") as smtp_mock:
+ smtp_mock.side_effect = socket.error
+ mg_globals.app_config = {
+ "email_debug_mode": False,
+ "email_smtp_use_ssl": False,
+ "email_smtp_host": "127.0.0.1",
+ "email_smtp_port": 0}
+ common.TESTS_ENABLED = False
+ mail.send_email("", "", "", "")
+
+ def test_no_smtp_host(self):
+ """ Empty email_smtp_host """
+ with pytest.raises(mail.NoSMTPServerError), mock.patch("smtplib.SMTP") as smtp_mock:
+ smtp_mock.return_value.connect.side_effect = socket.error
+ mg_globals.app_config = {
+ "email_debug_mode": False,
+ "email_smtp_use_ssl": False,
+ "email_smtp_host": "",
+ "email_smtp_port": 0}
+ common.TESTS_ENABLED = False
+ mail.send_email("", "", "", "")
diff --git a/mediagoblin/tests/test_video.py b/mediagoblin/tests/test_video.py
new file mode 100644
index 00000000..79244515
--- /dev/null
+++ b/mediagoblin/tests/test_video.py
@@ -0,0 +1,132 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2013 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import tempfile
+import os
+from contextlib import contextmanager
+import imghdr
+
+#os.environ['GST_DEBUG'] = '4,python:4'
+import pytest
+pytest.importorskip("gi.repository.Gst")
+
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import Gst
+Gst.init(None)
+
+from mediagoblin.media_types.video.transcoders import (capture_thumb,
+ VideoTranscoder)
+from mediagoblin.media_types.tools import discover
+
+@contextmanager
+def create_data(suffix=None, make_audio=False):
+ video = tempfile.NamedTemporaryFile()
+ src = Gst.ElementFactory.make('videotestsrc', None)
+ src.set_property('num-buffers', 10)
+ videorate = Gst.ElementFactory.make('videorate', None)
+ enc = Gst.ElementFactory.make('theoraenc', None)
+ mux = Gst.ElementFactory.make('oggmux', None)
+ dst = Gst.ElementFactory.make('filesink', None)
+ dst.set_property('location', video.name)
+ pipeline = Gst.Pipeline()
+ pipeline.add(src)
+ pipeline.add(videorate)
+ pipeline.add(enc)
+ pipeline.add(mux)
+ pipeline.add(dst)
+ src.link(videorate)
+ videorate.link(enc)
+ enc.link(mux)
+ mux.link(dst)
+ if make_audio:
+ audio_src = Gst.ElementFactory.make('audiotestsrc', None)
+ audio_src.set_property('num-buffers', 10)
+ audiorate = Gst.ElementFactory.make('audiorate', None)
+ audio_enc = Gst.ElementFactory.make('vorbisenc', None)
+ pipeline.add(audio_src)
+ pipeline.add(audio_enc)
+ pipeline.add(audiorate)
+ audio_src.link(audiorate)
+ audiorate.link(audio_enc)
+ audio_enc.link(mux)
+ pipeline.set_state(Gst.State.PLAYING)
+ state = pipeline.get_state(3 * Gst.SECOND)
+ assert state[0] == Gst.StateChangeReturn.SUCCESS
+ bus = pipeline.get_bus()
+ message = bus.timed_pop_filtered(
+ 3 * Gst.SECOND,
+ Gst.MessageType.ERROR | Gst.MessageType.EOS)
+ pipeline.set_state(Gst.State.NULL)
+ if suffix:
+ result = tempfile.NamedTemporaryFile(suffix=suffix)
+ else:
+ result = tempfile.NamedTemporaryFile()
+ yield (video.name, result.name)
+
+
+#TODO: this should be skipped if video plugin is not enabled
+def test_thumbnails():
+ '''
+ Test thumbnails generation.
+ 1. Create a video (+audio) from gst's videotestsrc
+ 2. Capture thumbnail
+ 3. Everything should get removed because of temp files usage
+ '''
+ #data create_data() as (video_name, thumbnail_name):
+ test_formats = [('.png', 'png'), ('.jpg', 'jpeg'), ('.gif', 'gif')]
+ for suffix, format in test_formats:
+ with create_data(suffix) as (video_name, thumbnail_name):
+ capture_thumb(video_name, thumbnail_name, width=40)
+ # check result file format
+ assert imghdr.what(thumbnail_name) == format
+ # TODO: check height and width
+ # FIXME: it doesn't work with small width, say, 10px. This should be
+ # fixed somehow
+ suffix, format = test_formats[0]
+ with create_data(suffix, True) as (video_name, thumbnail_name):
+ capture_thumb(video_name, thumbnail_name, width=40)
+ assert imghdr.what(thumbnail_name) == format
+ with create_data(suffix, True) as (video_name, thumbnail_name):
+ capture_thumb(video_name, thumbnail_name, width=10) # smaller width
+ assert imghdr.what(thumbnail_name) == format
+ with create_data(suffix, True) as (video_name, thumbnail_name):
+ capture_thumb(video_name, thumbnail_name, width=100) # bigger width
+ assert imghdr.what(thumbnail_name) == format
+
+
+def test_transcoder():
+ # test without audio
+ with create_data() as (video_name, result_name):
+ transcoder = VideoTranscoder()
+ transcoder.transcode(
+ video_name, result_name,
+ vp8_quality=8,
+ vp8_threads=0, # autodetect
+ vorbis_quality=0.3,
+ dimensions=(640, 640))
+ assert len(discover(result_name).get_video_streams()) == 1
+ # test with audio
+ with create_data(make_audio=True) as (video_name, result_name):
+ transcoder = VideoTranscoder()
+ transcoder.transcode(
+ video_name, result_name,
+ vp8_quality=8,
+ vp8_threads=0, # autodetect
+ vorbis_quality=0.3,
+ dimensions=(640, 640))
+ assert len(discover(result_name).get_video_streams()) == 1
+ assert len(discover(result_name).get_audio_streams()) == 1
diff --git a/mediagoblin/tests/test_workbench.py b/mediagoblin/tests/test_workbench.py
index 6695618b..3202e698 100644
--- a/mediagoblin/tests/test_workbench.py
+++ b/mediagoblin/tests/test_workbench.py
@@ -50,7 +50,7 @@ class TestWorkbench(object):
# kill a workbench
this_workbench = self.workbench_manager.create()
tmpfile_name = this_workbench.joinpath('temp.txt')
- tmpfile = file(tmpfile_name, 'w')
+ tmpfile = open(tmpfile_name, 'w')
with tmpfile:
tmpfile.write('lollerskates')
@@ -69,7 +69,7 @@ class TestWorkbench(object):
filepath = ['dir1', 'dir2', 'ourfile.txt']
with this_storage.get_file(filepath, 'w') as our_file:
- our_file.write('Our file')
+ our_file.write(b'Our file')
# with a local file storage
filename = this_workbench.localized_file(this_storage, filepath)
@@ -83,7 +83,7 @@ class TestWorkbench(object):
# ... write a brand new file, again ;)
with this_storage.get_file(filepath, 'w') as our_file:
- our_file.write('Our file')
+ our_file.write(b'Our file')
filename = this_workbench.localized_file(this_storage, filepath)
assert filename == os.path.join(
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index 060dfda9..39b9ac50 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -19,19 +19,22 @@ import os
import pkg_resources
import shutil
+import six
from paste.deploy import loadapp
from webtest import TestApp
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, MediaEntry, Collection, MediaComment, \
- CommentSubscription, CommentNotification, Privilege, CommentReport
+from mediagoblin.db.models import User, LocalUser, MediaEntry, Collection, TextComment, \
+ CommentSubscription, Notification, Privilege, Report, Client, \
+ RequestToken, AccessToken, Activity, Generator, Comment
from mediagoblin.tools import testing
from mediagoblin.init.config import read_mediagoblin_config
from mediagoblin.db.base import Session
from mediagoblin.meddleware import BaseMeddleware
from mediagoblin.auth import gen_password_hash
from mediagoblin.gmg_commands.dbupdate import run_dbupdate
+from mediagoblin.tools.crypto import random_string
from datetime import datetime
@@ -122,6 +125,8 @@ def get_app(request, paste_config=None, mgoblin_config=None):
app_config = global_config['mediagoblin']
# Run database setup/migrations
+ # @@: The *only* test that doesn't pass if we remove this is in
+ # test_persona.py... why?
run_dbupdate(app_config, global_config)
# setup app and return
@@ -142,7 +147,7 @@ def install_fixtures_simple(db, fixtures):
"""
Very simply install fixtures in the database
"""
- for collection_name, collection_fixtures in fixtures.iteritems():
+ for collection_name, collection_fixtures in six.iteritems(fixtures):
collection = db[collection_name]
for fixture in collection_fixtures:
collection.insert(fixture)
@@ -162,7 +167,7 @@ def assert_db_meets_expected(db, expected):
{'id': 'foo',
'some_field': 'some_value'},]}
"""
- for collection_name, collection_data in expected.iteritems():
+ for collection_name, collection_data in six.iteritems(expected):
collection = db[collection_name]
for expected_document in collection_data:
document = collection.query.filter_by(id=expected_document['id']).first()
@@ -173,9 +178,9 @@ def assert_db_meets_expected(db, expected):
def fixture_add_user(username=u'chris', password=u'toast',
privileges=[], wants_comment_notification=True):
# Reuse existing user or create a new one
- test_user = User.query.filter_by(username=username).first()
+ test_user = LocalUser.query.filter(LocalUser.username==username).first()
if test_user is None:
- test_user = User()
+ test_user = LocalUser()
test_user.username = username
test_user.email = username + u'@example.com'
if password is not None:
@@ -187,8 +192,11 @@ def fixture_add_user(username=u'chris', password=u'toast',
test_user.all_privileges.append(query.one())
test_user.save()
- # Reload
- test_user = User.query.filter_by(username=username).first()
+
+ # Reload - The `with_polymorphic` needs to be there to eagerly load
+ # the attributes on the LocalUser as this can't be done post detachment.
+ user_query = LocalUser.query.with_polymorphic(LocalUser)
+ test_user = user_query.filter(LocalUser.username==username).first()
# ... and detach from session:
Session.expunge(test_user)
@@ -198,12 +206,12 @@ def fixture_add_user(username=u'chris', password=u'toast',
def fixture_comment_subscription(entry, notify=True, send_email=None):
if send_email is None:
- uploader = User.query.filter_by(id=entry.uploader).first()
- send_email = uploader.wants_comment_notification
+ actor = LocalUser.query.filter_by(id=entry.actor).first()
+ send_email = actor.wants_comment_notification
cs = CommentSubscription(
media_entry_id=entry.id,
- user_id=entry.uploader,
+ user_id=entry.actor,
notify=notify,
send_email=send_email)
@@ -216,14 +224,16 @@ def fixture_comment_subscription(entry, notify=True, send_email=None):
return cs
-def fixture_add_comment_notification(entry_id, subject_id, user_id,
+def fixture_add_comment_notification(entry, subject, user,
seen=False):
- cn = CommentNotification(user_id=user_id,
- seen=seen,
- subject_id=subject_id)
+ cn = Notification(
+ user_id=user,
+ seen=seen,
+ )
+ cn.obj = subject
cn.save()
- cn = CommentNotification.query.filter_by(id=cn.id).first()
+ cn = Notification.query.filter_by(id=cn.id).first()
Session.expunge(cn)
@@ -248,7 +258,7 @@ def fixture_media_entry(title=u"Some title", slug=None,
entry = MediaEntry()
entry.title = title
entry.slug = slug
- entry.uploader = uploader
+ entry.actor = uploader
entry.media_type = u'image'
entry.state = state
@@ -272,15 +282,21 @@ def fixture_media_entry(title=u"Some title", slug=None,
return entry
-def fixture_add_collection(name=u"My first Collection", user=None):
+def fixture_add_collection(name=u"My first Collection", user=None,
+ collection_type=Collection.USER_DEFINED_TYPE):
if user is None:
user = fixture_add_user()
- coll = Collection.query.filter_by(creator=user.id, title=name).first()
+ coll = Collection.query.filter_by(
+ actor=user.id,
+ title=name,
+ type=collection_type
+ ).first()
if coll is not None:
return coll
coll = Collection()
- coll.creator = user.id
+ coll.actor = user.id
coll.title = name
+ coll.type = collection_type
coll.generate_slug()
coll.save()
@@ -297,22 +313,27 @@ def fixture_add_comment(author=None, media_entry=None, comment=None):
author = fixture_add_user().id
if media_entry is None:
- media_entry = fixture_media_entry().id
+ media_entry = fixture_media_entry()
if comment is None:
comment = \
'Auto-generated test comment by user #{0} on media #{0}'.format(
author, media_entry)
- comment = MediaComment(author=author,
- media_entry=media_entry,
- content=comment)
+ text_comment = TextComment(
+ actor=author,
+ content=comment
+ )
+ text_comment.save()
- comment.save()
+ comment_link = Comment()
+ comment_link.target = media_entry
+ comment_link.comment = text_comment
+ comment_link.save()
- Session.expunge(comment)
+ Session.expunge(comment_link)
- return comment
+ return text_comment
def fixture_add_comment_report(comment=None, reported_user=None,
reporter=None, created=None, report_content=None):
@@ -332,14 +353,40 @@ def fixture_add_comment_report(comment=None, reported_user=None,
report_content = \
'Auto-generated test report'
- comment_report = CommentReport(comment=comment,
- reported_user = reported_user,
- reporter = reporter,
- created = created,
- report_content=report_content)
-
+ comment_report = Report()
+ comment_report.obj = comment
+ comment_report.reported_user = reported_user
+ comment_report.reporter = reporter
+ comment_report.created = created
+ comment_report.report_content = report_content
+ comment_report.obj = comment
comment_report.save()
Session.expunge(comment_report)
return comment_report
+
+def fixture_add_activity(obj, verb="post", target=None, generator=None, actor=None):
+ if generator is None:
+ generator = Generator(
+ name="GNU MediaGoblin",
+ object_type="service"
+ )
+ generator.save()
+
+ if actor is None:
+ actor = fixture_add_user()
+
+ activity = Activity(
+ verb=verb,
+ actor=actor.id,
+ generator=generator.id,
+ )
+
+ activity.set_object(obj)
+
+ if target is not None:
+ activity.set_target(target)
+
+ activity.save()
+ return activity
diff --git a/mediagoblin/themes/airy/assets/css/airy.css b/mediagoblin/themes/airy/assets/css/airy.css
index 03d2cab8..7539997e 100644
--- a/mediagoblin/themes/airy/assets/css/airy.css
+++ b/mediagoblin/themes/airy/assets/css/airy.css
@@ -1,4 +1,4 @@
-body {
+html, body {
color: #4a4a4a;
background-color: #F7F7F7;
}
@@ -38,6 +38,10 @@ header {
color: #4a4a4a;
}
+#code_of_conduct_list strong {
+ color: #4a4a4a;
+}
+
@media screen and (max-width: 940px) {
header {
width: 100%;
diff --git a/mediagoblin/themes/sandyseventiesspeedboat b/mediagoblin/themes/sandyseventiesspeedboat
new file mode 120000
index 00000000..eb1b9db3
--- /dev/null
+++ b/mediagoblin/themes/sandyseventiesspeedboat
@@ -0,0 +1 @@
+../../extlib/sandyseventiesspeedboat/ \ No newline at end of file
diff --git a/mediagoblin/tools/crypto.py b/mediagoblin/tools/crypto.py
index b219a484..1107e200 100644
--- a/mediagoblin/tools/crypto.py
+++ b/mediagoblin/tools/crypto.py
@@ -36,7 +36,7 @@ try:
except AttributeError:
getrandbits = random.getrandbits
-
+# TODO: This should be attached to the MediaGoblinApp
__itsda_secret = None
@@ -51,7 +51,7 @@ def load_key(filename):
def create_key(key_dir, key_filepath):
global __itsda_secret
- old_umask = os.umask(077)
+ old_umask = os.umask(0o77)
key_file = None
try:
if not os.path.isdir(key_dir):
@@ -60,7 +60,7 @@ def create_key(key_dir, key_filepath):
key = str(getrandbits(192))
key_file = tempfile.NamedTemporaryFile(dir=key_dir, suffix='.bin',
delete=False)
- key_file.write(key)
+ key_file.write(key.encode('ascii'))
key_file.flush()
os.rename(key_file.name, key_filepath)
key_file.close()
@@ -73,13 +73,13 @@ def create_key(key_dir, key_filepath):
_log.info("Saved new key for It's Dangerous")
-def setup_crypto():
+def setup_crypto(app_config):
global __itsda_secret
- key_dir = mg_globals.app_config["crypto_path"]
+ key_dir = app_config["crypto_path"]
key_filepath = os.path.join(key_dir, 'itsdangeroussecret.bin')
try:
load_key(key_filepath)
- except IOError, error:
+ except IOError as error:
if error.errno != errno.ENOENT:
raise
create_key(key_dir, key_filepath)
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py
index 50f1aabf..fafd987d 100644
--- a/mediagoblin/tools/exif.py
+++ b/mediagoblin/tools/exif.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from exifread import process_file
from exifread.utils import Ratio
@@ -75,7 +77,7 @@ def extract_exif(filename):
Returns EXIF tags found in file at ``filename``
"""
try:
- with file(filename) as image:
+ with open(filename, 'rb') as image:
return process_file(image, details=False)
except IOError:
raise BadMediaFail(_('Could not read the image file.'))
@@ -94,7 +96,7 @@ def clean_exif(exif):
'Thumbnail JPEGInterchangeFormat']
return dict((key, _ifd_tag_to_dict(value)) for (key, value)
- in exif.iteritems() if key not in disabled_tags)
+ in six.iteritems(exif) if key not in disabled_tags)
def _ifd_tag_to_dict(tag):
@@ -110,7 +112,7 @@ def _ifd_tag_to_dict(tag):
'field_length': tag.field_length,
'values': None}
- if isinstance(tag.printable, str):
+ if isinstance(tag.printable, six.binary_type):
# Force it to be decoded as UTF-8 so that it'll fit into the DB
data['printable'] = tag.printable.decode('utf8', 'replace')
@@ -118,7 +120,7 @@ def _ifd_tag_to_dict(tag):
data['values'] = [_ratio_to_list(val) if isinstance(val, Ratio) else val
for val in tag.values]
else:
- if isinstance(tag.values, str):
+ if isinstance(tag.values, six.binary_type):
# Force UTF-8, so that it fits into the DB
data['values'] = tag.values.decode('utf8', 'replace')
else:
@@ -132,13 +134,19 @@ def _ratio_to_list(ratio):
def get_useful(tags):
- return dict((key, tag) for (key, tag) in tags.iteritems())
+ from collections import OrderedDict
+ return OrderedDict((key, tag) for (key, tag) in six.iteritems(tags))
def get_gps_data(tags):
"""
Processes EXIF data returned by EXIF.py
"""
+ def safe_gps_ratio_divide(ratio):
+ if ratio.den == 0:
+ return 0.0
+ return float(ratio.num) / float(ratio.den)
+
gps_data = {}
if not 'Image GPSInfo' in tags:
@@ -149,12 +157,12 @@ def get_gps_data(tags):
'latitude': tags['GPS GPSLatitude'],
'longitude': tags['GPS GPSLongitude']}
- for key, dat in dms_data.iteritems():
+ for key, dat in six.iteritems(dms_data):
gps_data[key] = (
lambda v:
- float(v[0].num) / float(v[0].den) \
- + (float(v[1].num) / float(v[1].den) / 60) \
- + (float(v[2].num) / float(v[2].den) / (60 * 60))
+ safe_gps_ratio_divide(v[0]) \
+ + (safe_gps_ratio_divide(v[1]) / 60) \
+ + (safe_gps_ratio_divide(v[2]) / (60 * 60))
)(dat.values)
if tags['GPS GPSLatitudeRef'].values == 'S':
diff --git a/mediagoblin/tools/federation.py b/mediagoblin/tools/federation.py
new file mode 100644
index 00000000..f2ee468c
--- /dev/null
+++ b/mediagoblin/tools/federation.py
@@ -0,0 +1,94 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2014 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from mediagoblin.db.models import Activity, Generator, User
+
+def create_generator(request):
+ """
+ This creates a Generator object based on the Client associated with the
+ OAuth credentials used. If the request has invalid OAuth credentials or
+ no OAuth credentials None is returned.
+ """
+ if not hasattr(request, "access_token"):
+ return None
+
+ client = request.access_token.get_requesttoken.get_client
+
+ # Check if there is a generator already
+ generator = Generator.query.filter_by(
+ name=client.application_name,
+ object_type="client"
+ ).first()
+ if generator is None:
+ generator = Generator(
+ name=client.application_name,
+ object_type="client"
+ )
+ generator.save()
+
+ return generator
+
+
+
+def create_activity(verb, obj, actor, target=None, generator=None):
+ """
+ This will create an Activity object which for the obj if possible
+ and save it. The verb should be one of the following:
+ add, author, create, delete, dislike, favorite, follow
+ like, post, share, unfollow, unfavorite, unlike, unshare,
+ update, tag.
+
+ If none of those fit you might not want/need to create an activity for
+ the object. The list is in mediagoblin.db.models.Activity.VALID_VERBS
+ """
+ # exception when we try and generate an activity with an unknow verb
+ # could change later to allow arbitrary verbs but at the moment we'll play
+ # it safe.
+
+ if verb not in Activity.VALID_VERBS:
+ raise ValueError("A invalid verb type has been supplied.")
+
+ if generator is None:
+ # This should exist as we're creating it by the migration for Generator
+ generator = Generator.query.filter_by(name="GNU MediaGoblin").first()
+ if generator is None:
+ generator = Generator(
+ name="GNU MediaGoblin",
+ object_type="service"
+ )
+ generator.save()
+
+ # Ensure the object has an ID which is needed by the activity.
+ obj.save(commit=False)
+
+ # Create the activity
+ activity = Activity(verb=verb)
+ activity.object = obj
+
+ if target is not None:
+ activity.target = target
+
+ # If they've set it override the actor from the obj.
+ activity.actor = actor.id if isinstance(actor, User) else actor
+ activity.generator = generator.id
+ activity.save()
+
+ # Sigh want to do this prior to save but I can't figure a way to get
+ # around relationship() not looking up object when model isn't saved.
+ if activity.generate_content():
+ activity.save()
+
+ return activity
diff --git a/mediagoblin/tools/files.py b/mediagoblin/tools/files.py
index 848c86f2..2c486ac8 100644
--- a/mediagoblin/tools/files.py
+++ b/mediagoblin/tools/files.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from mediagoblin import mg_globals
@@ -25,7 +27,7 @@ def delete_media_files(media):
- media: A MediaEntry document
"""
no_such_files = []
- for listpath in media.media_files.itervalues():
+ for listpath in six.itervalues(media.media_files):
try:
mg_globals.public_store.delete_file(
listpath)
diff --git a/mediagoblin/tools/mail.py b/mediagoblin/tools/mail.py
index 0fabc5a9..3dc180d8 100644
--- a/mediagoblin/tools/mail.py
+++ b/mediagoblin/tools/mail.py
@@ -14,9 +14,15 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import print_function, unicode_literals
+
+import socket
+import logging
+import six
import smtplib
-from email.MIMEText import MIMEText
+import sys
from mediagoblin import mg_globals, messages
+from mediagoblin._compat import MIMEText
from mediagoblin.tools import common
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -50,6 +56,14 @@ EMAIL_TEST_INBOX = []
EMAIL_TEST_MBOX_INBOX = []
+class MailError(Exception):
+ """ General exception for mail errors """
+
+
+class NoSMTPServerError(MailError):
+ pass
+
+
class FakeMhost(object):
"""
Just a fake mail host so we can capture and test messages
@@ -64,6 +78,8 @@ class FakeMhost(object):
'to': to_addrs,
'message': message})
+ def starttls(self):
+ raise smtplib.SMTPException("No STARTTLS here")
def _clear_test_inboxes():
global EMAIL_TEST_INBOX
@@ -95,13 +111,34 @@ def send_email(from_addr, to_addrs, subject, message_body):
else:
smtp_init = smtplib.SMTP
- mhost = smtp_init(
- mg_globals.app_config['email_smtp_host'],
- mg_globals.app_config['email_smtp_port'])
+ try:
+ mhost = smtp_init(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ except socket.error as original_error:
+ error_message = "Couldn't contact mail server on <{}>:<{}>".format(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ logging.debug(original_error)
+ raise NoSMTPServerError(error_message)
# SMTP.__init__ Issues SMTP.connect implicitly if host
if not mg_globals.app_config['email_smtp_host']: # e.g. host = ''
- mhost.connect() # We SMTP.connect explicitly
+ try:
+ mhost.connect() # We SMTP.connect explicitly
+ except socket.error as original_error:
+ error_message = "Couldn't contact mail server on <{}>:<{}>".format(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ logging.debug(original_error)
+ raise NoSMTPServerError(error_message)
+
+ try:
+ mhost.starttls()
+ except smtplib.SMTPException:
+ # Only raise an exception if we're forced to
+ if mg_globals.app_config['email_smtp_force_starttls']:
+ six.reraise(*sys.exc_info())
if ((not common.TESTS_ENABLED)
and (mg_globals.app_config['email_smtp_user']
@@ -119,12 +156,12 @@ def send_email(from_addr, to_addrs, subject, message_body):
EMAIL_TEST_INBOX.append(message)
elif mg_globals.app_config['email_debug_mode']:
- print u"===== Email ====="
- print u"From address: %s" % message['From']
- print u"To addresses: %s" % message['To']
- print u"Subject: %s" % message['Subject']
- print u"-- Body: --"
- print message.get_payload(decode=True)
+ print("===== Email =====")
+ print("From address: %s" % message['From'])
+ print("To addresses: %s" % message['To'])
+ print("Subject: %s" % message['Subject'])
+ print("-- Body: --")
+ print(message_body)
return mhost.sendmail(from_addr, to_addrs, message.as_string())
@@ -150,6 +187,8 @@ def email_debug_message(request):
"""
if mg_globals.app_config['email_debug_mode']:
# DEBUG message, no need to translate
- messages.add_message(request, messages.DEBUG,
- u"This instance is running in email debug mode. "
- u"The email will be on the console of the server process.")
+ messages.add_message(
+ request,
+ messages.DEBUG,
+ "This instance is running in email debug mode. "
+ "The email will be on the console of the server process.")
diff --git a/mediagoblin/tools/metadata.py b/mediagoblin/tools/metadata.py
index bfefcac9..aeb4f829 100644
--- a/mediagoblin/tools/metadata.py
+++ b/mediagoblin/tools/metadata.py
@@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from io import open
import os
import copy
import json
@@ -102,7 +103,7 @@ def load_resource(package, resource_path):
os.path.sep.
"""
filename = resource_filename(package, os.path.sep.join(resource_path))
- return file(filename).read()
+ return open(filename, encoding="utf-8").read()
def load_resource_json(package, resource_path):
"""
diff --git a/mediagoblin/tools/pagination.py b/mediagoblin/tools/pagination.py
index 855878e0..db5f69fb 100644
--- a/mediagoblin/tools/pagination.py
+++ b/mediagoblin/tools/pagination.py
@@ -14,12 +14,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import urllib
import copy
from math import ceil, floor
-from itertools import izip, count
+from itertools import count
from werkzeug.datastructures import MultiDict
+from six.moves import range, urllib, zip
+
PAGINATION_DEFAULT_PER_PAGE = 30
@@ -52,7 +53,7 @@ class Pagination(object):
if jump_to_id:
cursor = copy.copy(self.cursor)
- for (doc, increment) in izip(cursor, count(0)):
+ for (doc, increment) in list(zip(cursor, count(0))):
if doc.id == jump_to_id:
self.page = 1 + int(floor(increment / self.per_page))
@@ -84,7 +85,7 @@ class Pagination(object):
def iter_pages(self, left_edge=2, left_current=2,
right_current=5, right_edge=2):
last = 0
- for num in xrange(1, self.pages + 1):
+ for num in range(1, self.pages + 1):
if num <= left_edge or \
(num > self.page - left_current - 1 and \
num < self.page + right_current) or \
@@ -105,7 +106,7 @@ class Pagination(object):
new_get_params['page'] = page_no
return "%s?%s" % (
- base_url, urllib.urlencode(new_get_params))
+ base_url, urllib.parse.urlencode(new_get_params))
def get_page_url(self, request, page_no):
"""
diff --git a/mediagoblin/tools/processing.py b/mediagoblin/tools/processing.py
index 2abe6452..26d7bb9b 100644
--- a/mediagoblin/tools/processing.py
+++ b/mediagoblin/tools/processing.py
@@ -18,8 +18,7 @@ import logging
import json
import traceback
-from urllib2 import urlopen, Request, HTTPError
-from urllib import urlencode
+from six.moves.urllib import request, parse
_log = logging.getLogger(__name__)
@@ -37,10 +36,10 @@ def create_post_request(url, data, **kw):
data_parser: The parser function that is used to parse the `data`
argument
'''
- data_parser = kw.get('data_parser', urlencode)
+ data_parser = kw.get('data_parser', parse.urlencode)
headers = kw.get('headers', {})
- return Request(url, data_parser(data), headers=headers)
+ return request.Request(url, data_parser(data), headers=headers)
def json_processing_callback(entry):
@@ -48,12 +47,12 @@ def json_processing_callback(entry):
Send an HTTP post to the registered callback url, if any.
'''
if not entry.processing_metadata:
- _log.debug('No processing callback for {0}'.format(entry))
+ _log.debug('No processing callback URL for {0}'.format(entry))
return
url = entry.processing_metadata[0].callback_url
- _log.debug('Sending processing callback for {0} ({1})'.format(
+ _log.debug('Sending processing callback for {0} to {1}'.format(
entry,
url))
@@ -76,11 +75,11 @@ def json_processing_callback(entry):
data_parser=json.dumps)
try:
- urlopen(request)
+ request.urlopen(request)
_log.debug('Processing callback for {0} sent'.format(entry))
return True
- except HTTPError:
+ except request.HTTPError:
_log.error('Failed to send callback: {0}'.format(
traceback.format_exc()))
diff --git a/mediagoblin/tools/request.py b/mediagoblin/tools/request.py
index d4739039..7e1973d3 100644
--- a/mediagoblin/tools/request.py
+++ b/mediagoblin/tools/request.py
@@ -16,7 +16,12 @@
import json
import logging
-from mediagoblin.db.models import User
+
+import six
+from werkzeug.http import parse_options_header
+
+from mediagoblin.db.models import User, AccessToken
+from mediagoblin.oauth.tools.request import decode_authorization_header
_log = logging.getLogger(__name__)
@@ -31,6 +36,18 @@ def setup_user_in_request(request):
Examine a request and tack on a request.user parameter if that's
appropriate.
"""
+ # If API request the user will be associated with the access token
+ authorization = decode_authorization_header(request.headers)
+
+ if authorization.get(u"access_token"):
+ # Check authorization header.
+ token = authorization[u"oauth_token"]
+ token = AccessToken.query.filter_by(token=token).first()
+ if token is not None:
+ request.user = token.user
+ return
+
+
if 'user_id' not in request.session:
request.user = None
return
@@ -45,11 +62,12 @@ def setup_user_in_request(request):
def decode_request(request):
""" Decodes a request based on MIME-Type """
- data = request.get_data()
-
- if request.content_type == json_encoded:
- data = json.loads(data)
- elif request.content_type == form_encoded or request.content_type == "":
+ data = request.data
+ content_type, _ = parse_options_header(request.content_type)
+
+ if content_type == json_encoded:
+ data = json.loads(six.text_type(data, "utf-8"))
+ elif content_type == form_encoded or content_type == "":
data = request.form
else:
data = ""
diff --git a/mediagoblin/tools/response.py b/mediagoblin/tools/response.py
index cd99a230..889938a8 100644
--- a/mediagoblin/tools/response.py
+++ b/mediagoblin/tools/response.py
@@ -16,6 +16,7 @@
import json
+import six
import werkzeug.utils
from werkzeug.wrappers import Response as wz_Response
from mediagoblin.tools.template import render_template
@@ -29,11 +30,12 @@ class Response(wz_Response):
default_mimetype = u'text/html'
-def render_to_response(request, template, context, status=200):
+def render_to_response(request, template, context, status=200, mimetype=None):
"""Much like Django's shortcut.render()"""
return Response(
render_template(request, template, context),
- status=status)
+ status=status,
+ mimetype=mimetype)
def render_error(request, status=500, title=_('Oops!'),
err_msg=_('An error occured')):
@@ -152,11 +154,19 @@ def json_response(serializable, _disable_cors=False, *args, **kw):
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, X-Requested-With'}
- for key, value in cors_headers.iteritems():
+ for key, value in six.iteritems(cors_headers):
response.headers.set(key, value)
return response
+def json_error(error_str, status=400, *args, **kwargs):
+ """
+ This is like json_response but takes an error message in and formats
+ it in {"error": error_str}. This also sets the default HTTP status
+ code to 400.
+ """
+ return json_response({"error": error_str}, status=status, *args, **kwargs)
+
def form_response(data, *args, **kwargs):
"""
Responds using application/x-www-form-urlencoded and returns a werkzeug
diff --git a/mediagoblin/tools/routing.py b/mediagoblin/tools/routing.py
index a15795fe..a2c89f2a 100644
--- a/mediagoblin/tools/routing.py
+++ b/mediagoblin/tools/routing.py
@@ -17,7 +17,10 @@
import logging
import six
+
+from six.moves.urllib.parse import urlparse
from werkzeug.routing import Map, Rule
+
from mediagoblin.tools.common import import_component
@@ -27,15 +30,22 @@ url_map = Map()
class MGRoute(Rule):
- def __init__(self, endpoint, url, controller):
+ def __init__(self, endpoint, url, controller, match_slash=True):
Rule.__init__(self, url, endpoint=endpoint)
self.gmg_controller = controller
+ self.match_slash = match_slash
def empty(self):
new_rule = Rule.empty(self)
new_rule.gmg_controller = self.gmg_controller
return new_rule
+ def match(self, path, *args, **kwargs):
+ if not (self.match_slash or path.endswith("/")):
+ path = path + "/"
+
+ return super(MGRoute, self).match(path, *args, **kwargs)
+
def endpoint_to_controller(rule):
endpoint = rule.endpoint
@@ -51,11 +61,11 @@ def endpoint_to_controller(rule):
return view_func
-def add_route(endpoint, url, controller):
+def add_route(endpoint, url, controller, *args, **kwargs):
"""
Add a route to the url mapping
"""
- url_map.add(MGRoute(endpoint, url, controller))
+ url_map.add(MGRoute(endpoint, url, controller, *args, **kwargs))
def mount(mountpoint, routes):
@@ -65,3 +75,17 @@ def mount(mountpoint, routes):
for endpoint, url, controller in routes:
url = "%s/%s" % (mountpoint.rstrip('/'), url.lstrip('/'))
add_route(endpoint, url, controller)
+
+def extract_url_arguments(url, urlmap):
+ """
+ This extracts the URL arguments from a given URL
+ """
+ parsed_url = urlparse(url)
+ map_adapter = urlmap.bind(
+ server_name=parsed_url.netloc,
+ script_name=parsed_url.path,
+ url_scheme=parsed_url.scheme,
+ path_info=parsed_url.path
+ )
+
+ return map_adapter.match()[1]
diff --git a/mediagoblin/tools/staticdirect.py b/mediagoblin/tools/staticdirect.py
index 8381b8b6..881dd20e 100644
--- a/mediagoblin/tools/staticdirect.py
+++ b/mediagoblin/tools/staticdirect.py
@@ -24,6 +24,8 @@
import logging
+import six
+
_log = logging.getLogger(__name__)
@@ -48,7 +50,7 @@ class StaticDirect(object):
def __init__(self, domains):
self.domains = dict(
[(key, value.rstrip('/'))
- for key, value in domains.iteritems()])
+ for key, value in six.iteritems(domains)])
self.cache = {}
def __call__(self, filepath, domain=None):
diff --git a/mediagoblin/tools/template.py b/mediagoblin/tools/template.py
index e5acdf45..f2619808 100644
--- a/mediagoblin/tools/template.py
+++ b/mediagoblin/tools/template.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
import jinja2
from jinja2.ext import Extension
@@ -28,16 +29,14 @@ from mediagoblin import _version
from mediagoblin.tools import common
from mediagoblin.tools.translate import is_rtl
from mediagoblin.tools.translate import set_thread_locale
-from mediagoblin.tools.translate import get_locale_from_request
from mediagoblin.tools.pluginapi import get_hook_templates, hook_transform
from mediagoblin.tools.timesince import timesince
from mediagoblin.meddleware.csrf import render_csrf_form_token
-
SETUP_JINJA_ENVS = {}
-def get_jinja_env(template_loader, locale):
+def get_jinja_env(app, template_loader, locale):
"""
Set up the Jinja environment,
@@ -54,7 +53,7 @@ def get_jinja_env(template_loader, locale):
# The default config does not require a [jinja2] block.
# You may create one if you wish to enable additional jinja2 extensions,
# see example in config_spec.ini
- jinja2_config = mg_globals.global_config.get('jinja2', {})
+ jinja2_config = app.global_config.get('jinja2', {})
local_exts = jinja2_config.get('extensions', [])
# jinja2.StrictUndefined will give exceptions on references
@@ -66,9 +65,12 @@ def get_jinja_env(template_loader, locale):
'jinja2.ext.i18n', 'jinja2.ext.autoescape',
TemplateHookExtension] + local_exts)
- template_env.install_gettext_callables(
- mg_globals.thread_scope.translations.ugettext,
- mg_globals.thread_scope.translations.ungettext)
+ if six.PY2:
+ template_env.install_gettext_callables(mg_globals.thread_scope.translations.ugettext,
+ mg_globals.thread_scope.translations.ungettext)
+ else:
+ template_env.install_gettext_callables(mg_globals.thread_scope.translations.gettext,
+ mg_globals.thread_scope.translations.ngettext)
# All templates will know how to ...
# ... fetch all waiting messages and remove them from the queue
@@ -76,10 +78,10 @@ def get_jinja_env(template_loader, locale):
# ... have access to the global and app config
# ... determine if the language is rtl or ltr
template_env.globals['fetch_messages'] = messages.fetch_messages
- template_env.globals['app_config'] = mg_globals.app_config
- template_env.globals['global_config'] = mg_globals.global_config
+ template_env.globals['app_config'] = app.app_config
+ template_env.globals['global_config'] = app.global_config
template_env.globals['version'] = _version.__version__
- template_env.globals['auth'] = mg_globals.app.auth
+ template_env.globals['auth'] = app.auth
template_env.globals['is_rtl'] = is_rtl(locale)
template_env.filters['urlencode'] = url_quote_plus
diff --git a/mediagoblin/tools/text.py b/mediagoblin/tools/text.py
index 96df49d2..48a53d23 100644
--- a/mediagoblin/tools/text.py
+++ b/mediagoblin/tools/text.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import collections
import wtforms
import markdown
from lxml.html.clean import Cleaner
@@ -60,7 +61,7 @@ def convert_to_tag_list_of_dicts(tag_string):
Strips trailing, leading, and internal whitespace, and also converts
the "tags" text into an array of tags
"""
- taglist = []
+ slug_to_name = collections.OrderedDict()
if tag_string:
# Strip out internal, trailing, and leading whitespace
@@ -69,11 +70,10 @@ def convert_to_tag_list_of_dicts(tag_string):
# Split the tag string into a list of tags
for tag in stripped_tag_string.split(','):
tag = tag.strip()
- # Ignore empty or duplicate tags
- if tag and tag not in [t['name'] for t in taglist]:
- taglist.append({'name': tag,
- 'slug': url.slugify(tag)})
- return taglist
+ # Ignore empty tags or duplicate slugs
+ if tag:
+ slug_to_name[url.slugify(tag)] = tag
+ return [{'name': v, 'slug': k} for (k,v) in slug_to_name.items()]
def media_tags_as_string(media_entry_tags):
diff --git a/mediagoblin/tools/theme.py b/mediagoblin/tools/theme.py
index 97b041a6..79fd91e1 100644
--- a/mediagoblin/tools/theme.py
+++ b/mediagoblin/tools/theme.py
@@ -68,7 +68,7 @@ def register_themes(app_config, builtin_dir=BUILTIN_THEME_DIR):
themedata = themedata_for_theme_dir(themedir, abs_themedir)
registry[themedir] = themedata
-
+
# Built-in themes
if os.path.exists(builtin_dir):
_install_themes_in_dir(builtin_dir)
@@ -79,11 +79,9 @@ def register_themes(app_config, builtin_dir=BUILTIN_THEME_DIR):
_install_themes_in_dir(theme_install_dir)
current_theme_name = app_config.get('theme')
- if current_theme_name \
- and registry.has_key(current_theme_name):
+ try:
current_theme = registry[current_theme_name]
- else:
+ except KeyError:
current_theme = None
return registry, current_theme
-
diff --git a/mediagoblin/tools/timesince.py b/mediagoblin/tools/timesince.py
index b761c1be..7a8b3ff0 100644
--- a/mediagoblin/tools/timesince.py
+++ b/mediagoblin/tools/timesince.py
@@ -33,18 +33,6 @@ import pytz
from mediagoblin.tools.translate import pass_to_ugettext, lazy_pass_to_ungettext as _
-"""UTC time zone as a tzinfo instance."""
-utc = pytz.utc if pytz else UTC()
-
-def is_aware(value):
- """
- Determines if a given datetime.datetime is aware.
-
- The logic is described in Python's docs:
- http://docs.python.org/library/datetime.html#datetime.tzinfo
- """
- return value.tzinfo is not None and value.tzinfo.utcoffset(value) is not None
-
def timesince(d, now=None, reversed=False):
"""
Takes two datetime objects and returns the time between d and now
@@ -73,7 +61,7 @@ def timesince(d, now=None, reversed=False):
now = datetime.datetime(now.year, now.month, now.day)
if not now:
- now = datetime.datetime.now(utc if is_aware(d) else None)
+ now = datetime.datetime.utcnow()
delta = (d - now) if reversed else (now - d)
# ignore microseconds
diff --git a/mediagoblin/webfinger/routing.py b/mediagoblin/tools/transition.py
index eb10509f..a8041b89 100644
--- a/mediagoblin/webfinger/routing.py
+++ b/mediagoblin/tools/transition.py
@@ -14,10 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.tools.routing import add_route
-add_route('mediagoblin.webfinger.host_meta', '/.well-known/host-meta',
- 'mediagoblin.webfinger.views:host_meta')
+import os
-add_route('mediagoblin.webfinger.xrd', '/webfinger/xrd',
- 'mediagoblin.webfinger.views:xrd')
+# one global to disable them all
+DISABLE_GLOBALS = os.environ.get("DISABLE_GLOBALS", "false").lower() == "true"
diff --git a/mediagoblin/tools/translate.py b/mediagoblin/tools/translate.py
index f77351b5..a5e56cfe 100644
--- a/mediagoblin/tools/translate.py
+++ b/mediagoblin/tools/translate.py
@@ -17,6 +17,7 @@
import gettext
import pkg_resources
+import six
from babel import localedata
from babel.support import LazyProxy
@@ -52,9 +53,9 @@ class ReallyLazyProxy(LazyProxy):
"""
Like LazyProxy, except that it doesn't cache the value ;)
"""
- @property
- def value(self):
- return self._func(*self._args, **self._kwargs)
+ def __init__(self, func, *args, **kwargs):
+ super(ReallyLazyProxy, self).__init__(func, *args, **kwargs)
+ object.__setattr__(self, '_is_cache_enabled', False)
def __repr__(self):
return "<%s for %s(%r, %r)>" % (
@@ -146,8 +147,9 @@ def pass_to_ugettext(*args, **kwargs):
The reason we can't have a global ugettext method is because
mg_globals gets swapped out by the application per-request.
"""
- return mg_globals.thread_scope.translations.ugettext(
- *args, **kwargs)
+ if six.PY2:
+ return mg_globals.thread_scope.translations.ugettext(*args, **kwargs)
+ return mg_globals.thread_scope.translations.gettext(*args, **kwargs)
def pass_to_ungettext(*args, **kwargs):
"""
@@ -156,8 +158,9 @@ def pass_to_ungettext(*args, **kwargs):
The reason we can't have a global ugettext method is because
mg_globals gets swapped out by the application per-request.
"""
- return mg_globals.thread_scope.translations.ungettext(
- *args, **kwargs)
+ if six.PY2:
+ return mg_globals.thread_scope.translations.ungettext(*args, **kwargs)
+ return mg_globals.thread_scope.translations.ngettext(*args, **kwargs)
def lazy_pass_to_ugettext(*args, **kwargs):
diff --git a/mediagoblin/tools/url.py b/mediagoblin/tools/url.py
index 657c0373..4d97247a 100644
--- a/mediagoblin/tools/url.py
+++ b/mediagoblin/tools/url.py
@@ -17,6 +17,8 @@
import re
from unidecode import unidecode
+import six
+
_punct_re = re.compile(r'[\t !"#:$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
@@ -27,4 +29,4 @@ def slugify(text, delim=u'-'):
result = []
for word in _punct_re.split(text.lower()):
result.extend(unidecode(word).split())
- return unicode(delim.join(result))
+ return six.text_type(delim.join(result))
diff --git a/mediagoblin/tools/workbench.py b/mediagoblin/tools/workbench.py
index 0bd4096b..f1ad6414 100644
--- a/mediagoblin/tools/workbench.py
+++ b/mediagoblin/tools/workbench.py
@@ -18,10 +18,15 @@ import os
import shutil
import tempfile
+import six
+
+from mediagoblin._compat import py2_unicode
# Actual workbench stuff
# ----------------------
+
+@py2_unicode
class Workbench(object):
"""
Represent the directory for the workbench
@@ -36,11 +41,8 @@ class Workbench(object):
"""
self.dir = dir
- def __unicode__(self):
- return unicode(self.dir)
-
def __str__(self):
- return str(self.dir)
+ return six.text_type(self.dir)
def __repr__(self):
try:
diff --git a/mediagoblin/user_pages/forms.py b/mediagoblin/user_pages/forms.py
index 1a09864b..77e280e1 100644
--- a/mediagoblin/user_pages/forms.py
+++ b/mediagoblin/user_pages/forms.py
@@ -41,7 +41,7 @@ class MediaCollectForm(wtforms.Form):
note = wtforms.TextAreaField(
_('Include a note'),
[wtforms.validators.Optional()],)
- collection_title = wtforms.TextField(
+ collection_title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
collection_description = wtforms.TextAreaField(
diff --git a/mediagoblin/user_pages/lib.py b/mediagoblin/user_pages/lib.py
index e5c8defc..b6741001 100644
--- a/mediagoblin/user_pages/lib.py
+++ b/mediagoblin/user_pages/lib.py
@@ -14,14 +14,14 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from mediagoblin import mg_globals
+from mediagoblin.db.base import Session
+from mediagoblin.db.models import CollectionItem, Report, TextComment, \
+ MediaEntry
from mediagoblin.tools.mail import send_email
+from mediagoblin.tools.pluginapi import hook_runall
from mediagoblin.tools.template import render_template
from mediagoblin.tools.translate import pass_to_ugettext as _
-from mediagoblin import mg_globals
-from mediagoblin.db.base import Session
-from mediagoblin.db.models import (CollectionItem, MediaReport, CommentReport,
- MediaComment, MediaEntry)
-from mediagoblin.user_pages import forms as user_forms
def send_comment_email(user, comment, media, request):
@@ -38,11 +38,11 @@ def send_comment_email(user, comment, media, request):
comment_url = request.urlgen(
'mediagoblin.user_pages.media_home.view_comment',
comment=comment.id,
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id,
qualified=True) + '#comment'
- comment_author = comment.get_author.username
+ comment_author = comment.get_actor.username
rendered_email = render_template(
request, 'mediagoblin/user_pages/comment_email.txt',
@@ -64,55 +64,50 @@ def send_comment_email(user, comment, media, request):
def add_media_to_collection(collection, media, note=None, commit=True):
collection_item = CollectionItem()
collection_item.collection = collection.id
- collection_item.media_entry = media.id
+ collection_item.get_object = media
if note:
collection_item.note = note
Session.add(collection_item)
- collection.items = collection.items + 1
+ collection.num_items = collection.num_items + 1
Session.add(collection)
Session.add(media)
+ hook_runall('collection_add_media', collection_item=collection_item)
+
if commit:
Session.commit()
+
def build_report_object(report_form, media_entry=None, comment=None):
"""
This function is used to convert a form object (from a User filing a
- report) into either a MediaReport or CommentReport object.
+ report) into a Report.
:param report_form A MediaReportForm or a CommentReportForm object
with valid information from a POST request.
:param media_entry A MediaEntry object. The MediaEntry being repo-
- -rted by a MediaReport. In a CommentReport,
- this will be None.
- :param comment A MediaComment object. The MediaComment being
- reported by a CommentReport. In a MediaReport
- this will be None.
-
- :returns A MediaReport object if a valid MediaReportForm is
- passed as kwarg media_entry. This MediaReport has
+ -rted by a Report.
+ :param comment A Comment object. The Comment being
+ reported by a Report.
+
+ :returns A Report object if a valid MediaReportForm is
+ passed as kwarg media_entry. This Report has
not been saved.
- :returns A CommentReport object if a valid CommentReportForm
- is passed as kwarg comment. This CommentReport
- has not been saved.
:returns None if the form_dict is invalid.
"""
-
+ report_object = Report()
if report_form.validate() and comment is not None:
- report_object = CommentReport()
- report_object.comment_id = comment.id
- report_object.reported_user_id = MediaComment.query.get(
- comment.id).get_author.id
+ report_object.obj = comment.comment()
+ report_object.reported_user_id = TextComment.query.get(
+ comment.id).get_actor.id
elif report_form.validate() and media_entry is not None:
- report_object = MediaReport()
- report_object.media_entry_id = media_entry.id
+ report_object.obj = media_entry
report_object.reported_user_id = MediaEntry.query.get(
- media_entry.id).get_uploader.id
+ media_entry.id).get_actor.id
else:
return None
report_object.report_content = report_form.report_reason.data
report_object.reporter_id = report_form.reporter_id.data
return report_object
-
diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py
index 8eb51c8d..68cb0a3b 100644
--- a/mediagoblin/user_pages/routing.py
+++ b/mediagoblin/user_pages/routing.py
@@ -31,6 +31,10 @@ add_route('mediagoblin.user_pages.media_confirm_delete',
'/u/<string:user>/m/<int:media_id>/confirm-delete/',
'mediagoblin.user_pages.views:media_confirm_delete')
+add_route('mediagoblin.user_pages.activity_view',
+ '/<string:username>/activity/<string:id>/',
+ 'mediagoblin.user_pages.views:activity_view')
+
# Submission handling of new comments. TODO: only allow for POST methods
add_route('mediagoblin.user_pages.media_post_comment',
'/u/<string:user>/m/<int:media_id>/comment/add/',
@@ -93,6 +97,11 @@ add_route('mediagoblin.user_pages.processing_panel',
'/u/<string:user>/panel/',
'mediagoblin.user_pages.views:processing_panel')
+add_route('mediagoblin.user_pages.processing_panel',
+ '/u/<string:user>/panel/<any(processed, processing, failed):state>/',
+ 'mediagoblin.user_pages.views:processing_panel')
+
+
# Stray edit routes
add_route('mediagoblin.edit.edit_media',
'/u/<string:user>/m/<int:media_id>/edit/',
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 78751a28..eaae1bd7 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -18,14 +18,19 @@ import logging
import datetime
import json
+import six
+
from mediagoblin import messages, mg_globals
-from mediagoblin.db.models import (MediaEntry, MediaTag, Collection,
- CollectionItem, User)
+from mediagoblin.db.models import (MediaEntry, MediaTag, Collection, Comment,
+ CollectionItem, LocalUser, Activity, \
+ GenericModelReference)
+from mediagoblin.plugins.api.tools import get_media_file_paths
from mediagoblin.tools.response import render_to_response, render_404, \
redirect, redirect_obj
from mediagoblin.tools.text import cleaned_markdown_conversion
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.pagination import Pagination
+from mediagoblin.tools.federation import create_activity
from mediagoblin.user_pages import forms as user_forms
from mediagoblin.user_pages.lib import (send_comment_email,
add_media_to_collection, build_report_object)
@@ -50,8 +55,8 @@ _log.setLevel(logging.DEBUG)
@user_not_banned
@uses_pagination
def user_home(request, page):
- """'Homepage' of a User()"""
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ """'Homepage' of a LocalUser()"""
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if not user:
return render_404(request)
elif not user.has_privilege(u'active'):
@@ -61,7 +66,7 @@ def user_home(request, page):
{'user': user})
cursor = MediaEntry.query.\
- filter_by(uploader = user.id,
+ filter_by(actor = user.id,
state = u'processed').order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
@@ -87,10 +92,10 @@ def user_home(request, page):
@active_user_from_url
@uses_pagination
def user_gallery(request, page, url_user=None):
- """'Gallery' of a User()"""
+ """'Gallery' of a LocalUser()"""
tag = request.matchdict.get('tag', None)
cursor = MediaEntry.query.filter_by(
- uploader=url_user.id,
+ actor=url_user.id,
state=u'processed').order_by(MediaEntry.created.desc())
# Filter potentially by tag too:
@@ -175,10 +180,9 @@ def media_post_comment(request, media):
if not request.method == 'POST':
raise MethodNotAllowed()
- comment = request.db.MediaComment()
- comment.media_entry = media.id
- comment.author = request.user.id
- comment.content = unicode(request.form['comment_content'])
+ comment = request.db.TextComment()
+ comment.actor = request.user.id
+ comment.content = six.text_type(request.form['comment_content'])
# Show error message if commenting is disabled.
if not mg_globals.app_config['allow_comments']:
@@ -192,15 +196,20 @@ def media_post_comment(request, media):
messages.ERROR,
_("Oops, your comment was empty."))
else:
+ create_activity("post", comment, comment.actor, target=media)
+ add_comment_subscription(request.user, media)
comment.save()
+ link = request.db.Comment()
+ link.target = media
+ link.comment = comment
+ link.save()
+
messages.add_message(
- request, messages.SUCCESS,
+ request,
+ messages.SUCCESS,
_('Your comment has been posted!'))
-
- trigger_notification(comment, media, request)
-
- add_comment_subscription(request.user, media)
+ trigger_notification(link, media, request)
return redirect_obj(request, media)
@@ -212,7 +221,7 @@ def media_preview_comment(request):
if not request.is_xhr:
return render_404(request)
- comment = unicode(request.form['comment_content'])
+ comment = six.text_type(request.form['comment_content'])
cleancomment = { "content":cleaned_markdown_conversion(comment)}
return Response(json.dumps(cleancomment))
@@ -226,12 +235,16 @@ def media_collect(request, media):
form = user_forms.MediaCollectForm(request.form)
# A user's own collections:
form.collection.query = Collection.query.filter_by(
- creator = request.user.id).order_by(Collection.title)
+ actor=request.user.id,
+ type=Collection.USER_DEFINED_TYPE
+ ).order_by(Collection.title)
if request.method != 'POST' or not form.validate():
# No POST submission, or invalid form
if not form.validate():
- messages.add_message(request, messages.ERROR,
+ messages.add_message(
+ request,
+ messages.ERROR,
_('Please check your entries and try again.'))
return render_to_response(
@@ -245,52 +258,67 @@ def media_collect(request, media):
if form.collection_title.data:
# Make sure this user isn't duplicating an existing collection
existing_collection = Collection.query.filter_by(
- creator=request.user.id,
- title=form.collection_title.data).first()
+ actor=request.user.id,
+ title=form.collection_title.data,
+ type=Collection.USER_DEFINED_TYPE
+ ).first()
if existing_collection:
- messages.add_message(request, messages.ERROR,
- _('You already have a collection called "%s"!')
- % existing_collection.title)
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _('You already have a collection called "%s"!') %
+ existing_collection.title)
return redirect(request, "mediagoblin.user_pages.media_home",
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media=media.slug_or_id)
collection = Collection()
collection.title = form.collection_title.data
collection.description = form.collection_description.data
- collection.creator = request.user.id
+ collection.actor = request.user.id
+ collection.type = Collection.USER_DEFINED_TYPE
collection.generate_slug()
+ collection.get_public_id(request.urlgen)
+ create_activity("create", collection, collection.actor)
collection.save()
# Otherwise, use the collection selected from the drop-down
else:
collection = form.collection.data
- if collection and collection.creator != request.user.id:
+ if collection and collection.actor != request.user.id:
collection = None
# Make sure the user actually selected a collection
+ item = CollectionItem.query.filter_by(collection=collection.id)
+ item = item.join(CollectionItem.object_helper).filter_by(
+ model_type=media.__tablename__,
+ obj_pk=media.id
+ ).first()
+
if not collection:
messages.add_message(
- request, messages.ERROR,
+ request,
+ messages.ERROR,
_('You have to select or add a collection'))
return redirect(request, "mediagoblin.user_pages.media_collect",
- user=media.get_uploader.username,
+ user=media.get_actor.username,
media_id=media.id)
-
# Check whether media already exists in collection
- elif CollectionItem.query.filter_by(
- media_entry=media.id,
- collection=collection.id).first():
- messages.add_message(request, messages.ERROR,
- _('"%s" already in collection "%s"')
- % (media.title, collection.title))
+ elif item is not None:
+ messages.add_message(
+ request,
+ messages.ERROR,
+ _('"%s" already in collection "%s"') %
+ (media.title, collection.title))
else: # Add item to collection
add_media_to_collection(collection, media, form.note.data)
-
- messages.add_message(request, messages.SUCCESS,
- _('"%s" added to collection "%s"')
- % (media.title, collection.title))
+ create_activity("add", media, request.user, target=collection)
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('"%s" added to collection "%s"') %
+ (media.title, collection.title))
return redirect_obj(request, media)
@@ -305,16 +333,24 @@ def media_confirm_delete(request, media):
if request.method == 'POST' and form.validate():
if form.confirm.data is True:
- username = media.get_uploader.username
+ username = media.get_actor.username
+
+ # This probably is already filled but just in case it has slipped
+ # through the net somehow, we need to try and make sure the
+ # MediaEntry has a public ID so it gets properly soft-deleted.
+ media.get_public_id(request.urlgen)
- media.get_uploader.uploaded = media.get_uploader.uploaded - \
+ # Decrement the users uploaded quota.
+ media.get_actor.uploaded = media.get_actor.uploaded - \
media.file_size
- media.get_uploader.save()
+ media.get_actor.save()
# Delete MediaEntry and all related files, comments etc.
media.delete()
messages.add_message(
- request, messages.SUCCESS, _('You deleted the media.'))
+ request,
+ messages.SUCCESS,
+ _('You deleted the media.'))
location = media.url_to_next(request.urlgen)
if not location:
@@ -325,14 +361,17 @@ def media_confirm_delete(request, media):
return redirect(request, location=location)
else:
messages.add_message(
- request, messages.ERROR,
- _("The media was not deleted because you didn't check that you were sure."))
+ request,
+ messages.ERROR,
+ _("The media was not deleted because you didn't check "
+ "that you were sure."))
return redirect_obj(request, media)
if ((request.user.has_privilege(u'admin') and
- request.user.id != media.uploader)):
+ request.user.id != media.actor)):
messages.add_message(
- request, messages.WARNING,
+ request,
+ messages.WARNING,
_("You are about to delete another user's media. "
"Proceed with caution."))
@@ -348,7 +387,7 @@ def media_confirm_delete(request, media):
def user_collection(request, page, url_user=None):
"""A User-defined Collection"""
collection = Collection.query.filter_by(
- get_creator=url_user,
+ get_actor=url_user,
slug=request.matchdict['collection']).first()
if not collection:
@@ -377,7 +416,7 @@ def user_collection(request, page, url_user=None):
def collection_list(request, url_user=None):
"""A User-defined Collection"""
collections = Collection.query.filter_by(
- get_creator=url_user)
+ get_actor=url_user)
return render_to_response(
request,
@@ -394,30 +433,35 @@ def collection_item_confirm_remove(request, collection_item):
form = user_forms.ConfirmCollectionItemRemoveForm(request.form)
if request.method == 'POST' and form.validate():
- username = collection_item.in_collection.get_creator.username
+ username = collection_item.in_collection.get_actor.username
collection = collection_item.in_collection
if form.confirm.data is True:
- entry = collection_item.get_media_entry
- entry.save()
+ obj = collection_item.get_object()
+ obj.save()
collection_item.delete()
- collection.items = collection.items - 1
+ collection.num_items = collection.num_items - 1
collection.save()
messages.add_message(
- request, messages.SUCCESS, _('You deleted the item from the collection.'))
+ request,
+ messages.SUCCESS,
+ _('You deleted the item from the collection.'))
else:
messages.add_message(
- request, messages.ERROR,
- _("The item was not removed because you didn't check that you were sure."))
+ request,
+ messages.ERROR,
+ _("The item was not removed because you didn't check "
+ "that you were sure."))
return redirect_obj(request, collection)
if ((request.user.has_privilege(u'admin') and
- request.user.id != collection_item.in_collection.creator)):
+ request.user.id != collection_item.in_collection.actor)):
messages.add_message(
- request, messages.WARNING,
+ request,
+ messages.WARNING,
_("You are about to delete an item from another user's collection. "
"Proceed with caution."))
@@ -437,32 +481,41 @@ def collection_confirm_delete(request, collection):
if request.method == 'POST' and form.validate():
- username = collection.get_creator.username
+ username = collection.get_actor.username
if form.confirm.data is True:
collection_title = collection.title
+ # Firstly like with the MediaEntry delete, lets ensure the
+ # public_id is populated as this is really important!
+ collection.get_public_id(request.urlgen)
+
# Delete all the associated collection items
for item in collection.get_collection_items():
- entry = item.get_media_entry
- entry.save()
+ obj = item.get_object()
+ obj.save()
item.delete()
collection.delete()
- messages.add_message(request, messages.SUCCESS,
- _('You deleted the collection "%s"') % collection_title)
+ messages.add_message(
+ request,
+ messages.SUCCESS,
+ _('You deleted the collection "%s"') %
+ collection_title)
return redirect(request, "mediagoblin.user_pages.user_home",
user=username)
else:
messages.add_message(
- request, messages.ERROR,
- _("The collection was not deleted because you didn't check that you were sure."))
+ request,
+ messages.ERROR,
+ _("The collection was not deleted because you didn't "
+ "check that you were sure."))
return redirect_obj(request, collection)
if ((request.user.has_privilege(u'admin') and
- request.user.id != collection.creator)):
+ request.user.id != collection.actor)):
messages.add_message(
request, messages.WARNING,
_("You are about to delete another user's collection. "
@@ -482,27 +535,25 @@ def atom_feed(request):
"""
generates the atom feed with the newest images
"""
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username = request.matchdict['user']).first()
if not user or not user.has_privilege(u'active'):
return render_404(request)
+ feed_title = "MediaGoblin Feed for user '%s'" % request.matchdict['user']
+ link = request.urlgen('mediagoblin.user_pages.user_home',
+ qualified=True, user=request.matchdict['user'])
+ cursor = MediaEntry.query.filter_by(actor=user.id, state=u'processed')
+ cursor = cursor.order_by(MediaEntry.created.desc())
+ cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
- cursor = MediaEntry.query.filter_by(
- uploader = user.id,
- state = u'processed').\
- order_by(MediaEntry.created.desc()).\
- limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
"""
ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
"""
atomlinks = [{
- 'href': request.urlgen(
- 'mediagoblin.user_pages.user_home',
- qualified=True, user=request.matchdict['user']),
- 'rel': 'alternate',
- 'type': 'text/html'
- }]
+ 'href': link,
+ 'rel': 'alternate',
+ 'type': 'text/html'}]
if mg_globals.app_config["push_urls"]:
for push_url in mg_globals.app_config["push_urls"]:
@@ -511,24 +562,34 @@ def atom_feed(request):
'href': push_url})
feed = AtomFeed(
- "MediaGoblin: Feed for user '%s'" % request.matchdict['user'],
- feed_url=request.url,
- id='tag:{host},{year}:gallery.user-{user}'.format(
- host=request.host,
- year=datetime.datetime.today().strftime('%Y'),
- user=request.matchdict['user']),
- links=atomlinks)
+ feed_title,
+ feed_url=request.url,
+ id='tag:{host},{year}:gallery.user-{user}'.format(
+ host=request.host,
+ year=datetime.datetime.today().strftime('%Y'),
+ user=request.matchdict['user']),
+ links=atomlinks)
for entry in cursor:
- feed.add(entry.get('title'),
- entry.description_html,
+ # Include a thumbnail image in content.
+ file_urls = get_media_file_paths(entry.media_files, request.urlgen)
+ if 'thumb' in file_urls:
+ content = '<img src="{thumb}" alt='' /> {desc}'.format(
+ thumb=file_urls['thumb'], desc=entry.description_html)
+ else:
+ content = entry.description_html
+
+ feed.add(
+ entry.get('title'),
+ content,
id=entry.url_for_self(request.urlgen, qualified=True),
content_type='html',
author={
- 'name': entry.get_uploader.username,
+ 'name': entry.get_actor.username,
'uri': request.urlgen(
'mediagoblin.user_pages.user_home',
- qualified=True, user=entry.get_uploader.username)},
+ qualified=True,
+ user=entry.get_actor.username)},
updated=entry.get('created'),
links=[{
'href': entry.url_for_self(
@@ -544,13 +605,13 @@ def collection_atom_feed(request):
"""
generates the atom feed with the newest images from a collection
"""
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username = request.matchdict['user']).first()
if not user or not user.has_privilege(u'active'):
return render_404(request)
collection = Collection.query.filter_by(
- creator=user.id,
+ actor=user.id,
slug=request.matchdict['collection']).first()
if not collection:
return render_404(request)
@@ -588,19 +649,20 @@ def collection_atom_feed(request):
links=atomlinks)
for item in cursor:
- entry = item.get_media_entry
- feed.add(entry.get('title'),
+ obj = item.get_object()
+ feed.add(
+ obj.get('title'),
item.note_html,
- id=entry.url_for_self(request.urlgen, qualified=True),
+ id=obj.url_for_self(request.urlgen, qualified=True),
content_type='html',
author={
- 'name': entry.get_uploader.username,
+ 'name': obj.get_actor.username,
'uri': request.urlgen(
'mediagoblin.user_pages.user_home',
- qualified=True, user=entry.get_uploader.username)},
+ qualified=True, user=obj.get_actor.username)},
updated=item.get('added'),
links=[{
- 'href': entry.url_for_self(
+ 'href': obj.url_for_self(
request.urlgen,
qualified=True),
'rel': 'alternate',
@@ -608,13 +670,15 @@ def collection_atom_feed(request):
return feed.get_response()
+@active_user_from_url
+@uses_pagination
@require_active_login
-def processing_panel(request):
+def processing_panel(request, page, url_user):
"""
Show to the user what media is still in conversion/processing...
and what failed, and why!
"""
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
# TODO: XXX: Should this be a decorator?
#
# Make sure we have permission to access this user's panel. Only
@@ -624,33 +688,29 @@ def processing_panel(request):
return redirect(
request, 'mediagoblin.user_pages.user_home',
user=user.username)
-
# Get media entries which are in-processing
- processing_entries = MediaEntry.query.\
- filter_by(uploader = user.id,
- state = u'processing').\
- order_by(MediaEntry.created.desc())
-
- # Get media entries which have failed to process
- failed_entries = MediaEntry.query.\
- filter_by(uploader = user.id,
- state = u'failed').\
- order_by(MediaEntry.created.desc())
-
- processed_entries = MediaEntry.query.\
- filter_by(uploader = user.id,
- state = u'processed').\
- order_by(MediaEntry.created.desc()).\
- limit(10)
+ entries = (MediaEntry.query.filter_by(actor=user.id)
+ .order_by(MediaEntry.created.desc()))
+
+ try:
+ state = request.matchdict['state']
+ # no exception was thrown, filter entries by state
+ entries = entries.filter_by(state=state)
+ except KeyError:
+ # show all entries
+ pass
+
+ pagination = Pagination(page, entries)
+ pagination.per_page = 30
+ entries_on_a_page = pagination()
# Render to response
return render_to_response(
request,
'mediagoblin/user_pages/processing_panel.html',
{'user': user,
- 'processing_entries': processing_entries,
- 'failed_entries': failed_entries,
- 'processed_entries': processed_entries})
+ 'entries': entries_on_a_page,
+ 'pagination': pagination})
@allow_reporting
@get_user_media_entry
@@ -658,14 +718,14 @@ def processing_panel(request):
@get_optional_media_comment_by_id
def file_a_report(request, media, comment):
"""
- This view handles the filing of a MediaReport or a CommentReport.
+ This view handles the filing of a Report.
"""
if comment is not None:
- if not comment.get_media_entry.id == media.id:
+ if not comment.target().id == media.id:
return render_404(request)
form = user_forms.CommentReportForm(request.form)
- context = {'media': media,
+ context = {'media': comment.target(),
'comment':comment,
'form':form}
else:
@@ -676,9 +736,11 @@ def file_a_report(request, media, comment):
if request.method == "POST":
- report_object = build_report_object(form,
+ report_object = build_report_object(
+ form,
media_entry=media,
- comment=comment)
+ comment=comment
+ )
# if the object was built successfully, report_table will not be None
if report_object:
@@ -692,3 +754,37 @@ def file_a_report(request, media, comment):
request,
'mediagoblin/user_pages/report.html',
context)
+
+@require_active_login
+def activity_view(request):
+ """ /<username>/activity/<id> - Display activity
+
+ This should display a HTML presentation of the activity
+ this is NOT an API endpoint.
+ """
+ # Get the user object.
+ username = request.matchdict["username"]
+ user = LocalUser.query.filter_by(username=username).first()
+
+ activity_id = request.matchdict["id"]
+
+ if request.user is None:
+ return render_404(request)
+
+ activity = Activity.query.filter_by(
+ id=activity_id,
+ author=user.id
+ ).first()
+
+ # There isn't many places to check that the public_id is filled so this
+ # will do, it really should be, lets try and fix that if it isn't.
+ activity.get_public_id(request.urlgen)
+
+ if activity is None:
+ return render_404(request)
+
+ return render_to_response(
+ request,
+ "mediagoblin/api/activity.html",
+ {"activity": activity}
+ )
diff --git a/mediagoblin/views.py b/mediagoblin/views.py
index 009e48e4..9e893d56 100644
--- a/mediagoblin/views.py
+++ b/mediagoblin/views.py
@@ -25,7 +25,7 @@ from mediagoblin.decorators import uses_pagination, user_not_banned
@user_not_banned
@uses_pagination
def default_root_view(request, page):
- cursor = MediaEntry.query.filter_by(state=u'processed').\
+ cursor = request.db.query(MediaEntry).filter_by(state=u'processed').\
order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
diff --git a/mediagoblin/webfinger/views.py b/mediagoblin/webfinger/views.py
deleted file mode 100644
index 97fc3ef7..00000000
--- a/mediagoblin/webfinger/views.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-'''
-For references, see docstring in mediagoblin/webfinger/__init__.py
-'''
-
-import re
-
-from urlparse import urlparse
-
-from mediagoblin.tools.response import render_to_response, render_404
-
-def host_meta(request):
- '''
- Webfinger host-meta
- '''
-
- placeholder = 'MG_LRDD_PLACEHOLDER'
-
- lrdd_title = 'GNU MediaGoblin - User lookup'
-
- lrdd_template = request.urlgen(
- 'mediagoblin.webfinger.xrd',
- uri=placeholder,
- qualified=True)
-
- return render_to_response(
- request,
- 'mediagoblin/webfinger/host-meta.xml',
- {'request': request,
- 'lrdd_template': lrdd_template,
- 'lrdd_title': lrdd_title,
- 'placeholder': placeholder})
-
-MATCH_SCHEME_PATTERN = re.compile(r'^acct:')
-
-def xrd(request):
- '''
- Find user data based on a webfinger URI
- '''
- param_uri = request.GET.get('uri')
-
- if not param_uri:
- return render_404(request)
-
- '''
- :py:module:`urlparse` does not recognize usernames in URIs of the
- form ``acct:user@example.org`` or ``user@example.org``.
- '''
- if not MATCH_SCHEME_PATTERN.search(param_uri):
- # Assume the URI is in the form ``user@example.org``
- uri = 'acct://' + param_uri
- else:
- # Assumes the URI looks like ``acct:user@example.org
- uri = MATCH_SCHEME_PATTERN.sub(
- 'acct://', param_uri)
-
- parsed = urlparse(uri)
-
- xrd_subject = param_uri
-
- # TODO: Verify that the user exists
- # Q: Does webfinger support error handling in this case?
- # Returning 404 seems intuitive, need to check.
- if parsed.username:
- # The user object
- # TODO: Fetch from database instead of using the MockUser
- user = MockUser()
- user.username = parsed.username
-
- xrd_links = [
- {'attrs': {
- 'rel': 'http://microformats.org/profile/hcard',
- 'href': request.urlgen(
- 'mediagoblin.user_pages.user_home',
- user=user.username,
- qualified=True)}},
- {'attrs': {
- 'rel': 'http://schemas.google.com/g/2010#updates-from',
- 'href': request.urlgen(
- 'mediagoblin.user_pages.atom_feed',
- user=user.username,
- qualified=True)}}]
-
- xrd_alias = request.urlgen(
- 'mediagoblin.user_pages.user_home',
- user=user.username,
- qualified=True)
-
- return render_to_response(
- request,
- 'mediagoblin/webfinger/xrd.xml',
- {'request': request,
- 'subject': xrd_subject,
- 'alias': xrd_alias,
- 'links': xrd_links })
- else:
- return render_404(request)
-
-class MockUser(object):
- '''
- TEMPORARY user object
- '''
- username = None